Index: talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java |
diff --git a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java |
index c4785c9913f34527a4c09fbddbcaaa9b18e2eecf..1e228cf7c8cc9d8cbe2e88da3f135e8721daec5b 100644 |
--- a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java |
+++ b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java |
@@ -427,13 +427,24 @@ public class SurfaceViewRenderer extends SurfaceView |
if (Thread.currentThread() != renderThread) { |
throw new IllegalStateException(getResourceName() + "Wrong thread."); |
} |
+ // Fetch and render |pendingFrame|. |
+ final VideoRenderer.I420Frame frame; |
+ synchronized (frameLock) { |
+ if (pendingFrame == null) { |
+ return; |
+ } |
+ frame = pendingFrame; |
+ pendingFrame = null; |
+ } |
if (eglBase == null || !eglBase.hasSurface()) { |
Logging.d(TAG, getResourceName() + "No surface to draw on"); |
+ VideoRenderer.renderFrameDone(frame); |
return; |
} |
if (!checkConsistentLayout()) { |
// Output intermediate black frames while the layout is updated. |
makeBlack(); |
+ VideoRenderer.renderFrameDone(frame); |
return; |
} |
// After a surface size change, the EGLSurface might still have a buffer of the old size in the |
@@ -444,15 +455,6 @@ public class SurfaceViewRenderer extends SurfaceView |
makeBlack(); |
} |
} |
- // Fetch and render |pendingFrame|. |
- final VideoRenderer.I420Frame frame; |
- synchronized (frameLock) { |
- if (pendingFrame == null) { |
- return; |
- } |
- frame = pendingFrame; |
- pendingFrame = null; |
- } |
final long startTimeNs = System.nanoTime(); |
final float[] texMatrix; |