diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java index 49a659dffe..a97b160529 100644 --- a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java +++ b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java @@ -42,7 +42,6 @@ import android.opengl.EGLContext; import android.opengl.GLES20; import android.opengl.GLSurfaceView; import android.opengl.Matrix; -import android.util.Log; import org.webrtc.Logging; import org.webrtc.VideoRenderer.I420Frame; @@ -172,6 +171,10 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { rotationDegree = 0; } + public synchronized void reset() { + seenFrame = false; + } + private synchronized void release() { surface = null; synchronized (pendingFrameLock) { @@ -549,7 +552,7 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { Logging.d(TAG, "VideoRendererGui.remove"); if (instance == null) { throw new RuntimeException( - "Attempt to remove yuv renderer before setting GLSurfaceView"); + "Attempt to remove renderer before setting GLSurfaceView"); } synchronized (instance.yuvImageRenderers) { final int index = instance.yuvImageRenderers.indexOf(renderer); @@ -561,6 +564,21 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { } } + public static synchronized void reset(VideoRenderer.Callbacks renderer) { + Logging.d(TAG, "VideoRendererGui.reset"); + if (instance == null) { + throw new RuntimeException( + "Attempt to reset renderer before setting GLSurfaceView"); + } + synchronized (instance.yuvImageRenderers) { + for (YuvImageRenderer yuvImageRenderer : instance.yuvImageRenderers) { + if (yuvImageRenderer == renderer) { + yuvImageRenderer.reset(); + } + } + } + } + @SuppressLint("NewApi") @Override public void onSurfaceCreated(GL10 unused, EGLConfig config) {