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}
This commit is contained in:
parent
c376fd1573
commit
521dffab5d
@ -41,6 +41,7 @@ public class SurfaceViewRenderer
|
|||||||
private RendererCommon.RendererEvents rendererEvents;
|
private RendererCommon.RendererEvents rendererEvents;
|
||||||
|
|
||||||
private final Object layoutLock = new Object();
|
private final Object layoutLock = new Object();
|
||||||
|
private boolean isRenderingPaused = false;
|
||||||
private boolean isFirstFrameRendered;
|
private boolean isFirstFrameRendered;
|
||||||
private int rotatedFrameWidth;
|
private int rotatedFrameWidth;
|
||||||
private int rotatedFrameHeight;
|
private int rotatedFrameHeight;
|
||||||
@ -177,14 +178,23 @@ public class SurfaceViewRenderer
|
|||||||
* reduction.
|
* reduction.
|
||||||
*/
|
*/
|
||||||
public void setFpsReduction(float fps) {
|
public void setFpsReduction(float fps) {
|
||||||
|
synchronized (layoutLock) {
|
||||||
|
isRenderingPaused = fps == 0f;
|
||||||
|
}
|
||||||
eglRenderer.setFpsReduction(fps);
|
eglRenderer.setFpsReduction(fps);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disableFpsReduction() {
|
public void disableFpsReduction() {
|
||||||
|
synchronized (layoutLock) {
|
||||||
|
isRenderingPaused = false;
|
||||||
|
}
|
||||||
eglRenderer.disableFpsReduction();
|
eglRenderer.disableFpsReduction();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pauseVideo() {
|
public void pauseVideo() {
|
||||||
|
synchronized (layoutLock) {
|
||||||
|
isRenderingPaused = true;
|
||||||
|
}
|
||||||
eglRenderer.pauseVideo();
|
eglRenderer.pauseVideo();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,6 +305,9 @@ public class SurfaceViewRenderer
|
|||||||
// Update frame dimensions and report any changes to |rendererEvents|.
|
// Update frame dimensions and report any changes to |rendererEvents|.
|
||||||
private void updateFrameDimensionsAndReportEvents(VideoRenderer.I420Frame frame) {
|
private void updateFrameDimensionsAndReportEvents(VideoRenderer.I420Frame frame) {
|
||||||
synchronized (layoutLock) {
|
synchronized (layoutLock) {
|
||||||
|
if (isRenderingPaused) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!isFirstFrameRendered) {
|
if (!isFirstFrameRendered) {
|
||||||
isFirstFrameRendered = true;
|
isFirstFrameRendered = true;
|
||||||
logD("Reporting first rendered frame.");
|
logD("Reporting first rendered frame.");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user