Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: webrtc/sdk/android/api/org/webrtc/EglRenderer.java

Issue 3002433002: Update EglRenderer to use lambdas. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/sdk/android/api/org/webrtc/EglRenderer.java
diff --git a/webrtc/sdk/android/api/org/webrtc/EglRenderer.java b/webrtc/sdk/android/api/org/webrtc/EglRenderer.java
index d0458ed6eb8de0d48e73e10cc96675a4544778b8..e5863d3d716a144be9ca65a7cde93e1735faf73d 100644
--- a/webrtc/sdk/android/api/org/webrtc/EglRenderer.java
+++ b/webrtc/sdk/android/api/org/webrtc/EglRenderer.java
@@ -127,14 +127,6 @@ public class EglRenderer implements VideoRenderer.Callbacks {
// Used for bitmap capturing.
private GlTextureFrameBuffer bitmapTextureFramebuffer;
- // Runnable for posting frames to render thread.
- private final Runnable renderFrameRunnable = new Runnable() {
- @Override
- public void run() {
- renderFrameOnRenderThread();
- }
- };
-
private final Runnable logStatisticsRunnable = new Runnable() {
@Override
public void run() {
@@ -180,19 +172,16 @@ public class EglRenderer implements VideoRenderer.Callbacks {
// Create EGL context on the newly created render thread. It should be possibly to create the
// context on this thread and make it current on the render thread, but this causes failure on
// some Marvel based JB devices. https://bugs.chromium.org/p/webrtc/issues/detail?id=6350.
- ThreadUtils.invokeAtFrontUninterruptibly(renderThreadHandler, new Runnable() {
- @Override
- public void run() {
- // If sharedContext is null, then texture frames are disabled. This is typically for old
- // devices that might not be fully spec compliant, so force EGL 1.0 since EGL 1.4 has
- // caused trouble on some weird devices.
- if (sharedContext == null) {
- logD("EglBase10.create context");
- eglBase = EglBase.createEgl10(configAttributes);
- } else {
- logD("EglBase.create shared context");
- eglBase = EglBase.create(sharedContext, configAttributes);
- }
+ ThreadUtils.invokeAtFrontUninterruptibly(renderThreadHandler, () -> {
+ // If sharedContext is null, then texture frames are disabled. This is typically for old
+ // devices that might not be fully spec compliant, so force EGL 1.0 since EGL 1.4 has
+ // caused trouble on some weird devices.
+ if (sharedContext == null) {
+ logD("EglBase10.create context");
+ eglBase = EglBase.createEgl10(configAttributes);
+ } else {
+ logD("EglBase.create shared context");
+ eglBase = EglBase.create(sharedContext, configAttributes);
}
});
renderThreadHandler.post(eglSurfaceCreationRunnable);
@@ -232,35 +221,29 @@ public class EglRenderer implements VideoRenderer.Callbacks {
}
renderThreadHandler.removeCallbacks(logStatisticsRunnable);
// Release EGL and GL resources on render thread.
- renderThreadHandler.postAtFrontOfQueue(new Runnable() {
- @Override
- public void run() {
- if (drawer != null) {
- drawer.release();
- drawer = null;
- }
- yuvUploader.release();
- if (bitmapTextureFramebuffer != null) {
- bitmapTextureFramebuffer.release();
- bitmapTextureFramebuffer = null;
- }
- if (eglBase != null) {
- logD("eglBase detach and release.");
- eglBase.detachCurrent();
- eglBase.release();
- eglBase = null;
- }
- eglCleanupBarrier.countDown();
+ renderThreadHandler.postAtFrontOfQueue(() -> {
+ if (drawer != null) {
+ drawer.release();
+ drawer = null;
+ }
+ yuvUploader.release();
+ if (bitmapTextureFramebuffer != null) {
+ bitmapTextureFramebuffer.release();
+ bitmapTextureFramebuffer = null;
+ }
+ if (eglBase != null) {
+ logD("eglBase detach and release.");
+ eglBase.detachCurrent();
+ eglBase.release();
+ eglBase = null;
}
+ eglCleanupBarrier.countDown();
});
final Looper renderLooper = renderThreadHandler.getLooper();
// TODO(magjed): Replace this post() with renderLooper.quitSafely() when API support >= 18.
- renderThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- logD("Quitting render thread.");
- renderLooper.quit();
- }
+ renderThreadHandler.post(() -> {
+ logD("Quitting render thread.");
+ renderLooper.quit();
});
// Don't accept any more frames or messages to the render thread.
renderThreadHandler = null;
@@ -397,13 +380,10 @@ public class EglRenderer implements VideoRenderer.Callbacks {
*/
public void addFrameListener(final FrameListener listener, final float scale,
final RendererCommon.GlDrawer drawerParam, final boolean applyFpsReduction) {
- postToRenderThread(new Runnable() {
- @Override
- public void run() {
- final RendererCommon.GlDrawer listenerDrawer = drawerParam == null ? drawer : drawerParam;
- frameListeners.add(
- new FrameListenerAndParams(listener, scale, listenerDrawer, applyFpsReduction));
- }
+ postToRenderThread(() -> {
+ final RendererCommon.GlDrawer listenerDrawer = drawerParam == null ? drawer : drawerParam;
+ frameListeners.add(
+ new FrameListenerAndParams(listener, scale, listenerDrawer, applyFpsReduction));
});
}
@@ -419,15 +399,12 @@ public class EglRenderer implements VideoRenderer.Callbacks {
throw new RuntimeException("removeFrameListener must not be called on the render thread.");
}
final CountDownLatch latch = new CountDownLatch(1);
- postToRenderThread(new Runnable() {
- @Override
- public void run() {
- latch.countDown();
- final Iterator<FrameListenerAndParams> iter = frameListeners.iterator();
- while (iter.hasNext()) {
- if (iter.next().listener == listener) {
- iter.remove();
- }
+ postToRenderThread(() -> {
+ latch.countDown();
+ final Iterator<FrameListenerAndParams> iter = frameListeners.iterator();
+ while (iter.hasNext()) {
+ if (iter.next().listener == listener) {
+ iter.remove();
}
}
});
@@ -453,7 +430,7 @@ public class EglRenderer implements VideoRenderer.Callbacks {
VideoRenderer.renderFrameDone(pendingFrame);
}
pendingFrame = frame;
- renderThreadHandler.post(renderFrameRunnable);
+ renderThreadHandler.post(this ::renderFrameOnRenderThread);
}
}
if (dropOldFrame) {
@@ -473,15 +450,12 @@ public class EglRenderer implements VideoRenderer.Callbacks {
synchronized (handlerLock) {
if (renderThreadHandler != null) {
renderThreadHandler.removeCallbacks(eglSurfaceCreationRunnable);
- renderThreadHandler.postAtFrontOfQueue(new Runnable() {
- @Override
- public void run() {
- if (eglBase != null) {
- eglBase.detachCurrent();
- eglBase.releaseSurface();
- }
- completionCallback.run();
+ renderThreadHandler.postAtFrontOfQueue(() -> {
+ if (eglBase != null) {
+ eglBase.detachCurrent();
+ eglBase.releaseSurface();
}
+ completionCallback.run();
});
return;
}
@@ -524,12 +498,7 @@ public class EglRenderer implements VideoRenderer.Callbacks {
if (renderThreadHandler == null) {
return;
}
- renderThreadHandler.postAtFrontOfQueue(new Runnable() {
- @Override
- public void run() {
- clearSurfaceOnRenderThread(r, g, b, a);
- }
- });
+ renderThreadHandler.postAtFrontOfQueue(() -> clearSurfaceOnRenderThread(r, g, b, a));
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698