From 521dffab5d2936cac38a78f9be1767a28fa9b237 Mon Sep 17 00:00:00 2001 From: sakal Date: Wed, 26 Apr 2017 06:05:18 -0700 Subject: [PATCH] Pause changing surface size when rendering is paused. BUG=b/31895311 Review-Url: https://codereview.webrtc.org/2837563002 Cr-Commit-Position: refs/heads/master@{#17886} --- .../android/api/org/webrtc/SurfaceViewRenderer.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/webrtc/sdk/android/api/org/webrtc/SurfaceViewRenderer.java b/webrtc/sdk/android/api/org/webrtc/SurfaceViewRenderer.java index 2a9d04f046..ccfb9d0641 100644 --- a/webrtc/sdk/android/api/org/webrtc/SurfaceViewRenderer.java +++ b/webrtc/sdk/android/api/org/webrtc/SurfaceViewRenderer.java @@ -41,6 +41,7 @@ public class SurfaceViewRenderer private RendererCommon.RendererEvents rendererEvents; private final Object layoutLock = new Object(); + private boolean isRenderingPaused = false; private boolean isFirstFrameRendered; private int rotatedFrameWidth; private int rotatedFrameHeight; @@ -177,14 +178,23 @@ public class SurfaceViewRenderer * reduction. */ public void setFpsReduction(float fps) { + synchronized (layoutLock) { + isRenderingPaused = fps == 0f; + } eglRenderer.setFpsReduction(fps); } public void disableFpsReduction() { + synchronized (layoutLock) { + isRenderingPaused = false; + } eglRenderer.disableFpsReduction(); } public void pauseVideo() { + synchronized (layoutLock) { + isRenderingPaused = true; + } eglRenderer.pauseVideo(); } @@ -295,6 +305,9 @@ public class SurfaceViewRenderer // Update frame dimensions and report any changes to |rendererEvents|. private void updateFrameDimensionsAndReportEvents(VideoRenderer.I420Frame frame) { synchronized (layoutLock) { + if (isRenderingPaused) { + return; + } if (!isFirstFrameRendered) { isFirstFrameRendered = true; logD("Reporting first rendered frame.");