From 4f2152e3286b03292836fd95813cc95933c79c4d Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Tue, 24 Nov 2015 13:54:31 +0100 Subject: [PATCH] Android SurfaceViewRenderer: Make sure not to call eglCreateSurface() twice eglCreateSurface() calls are posted to the render thread from both init() and surfaceCreated(). If the render thread does not process the eglCreateSurface() message from init() before surfaceCreated() is called, eglCreateSurface() will be called twice resulting in a crash. This CL makes sure eglCreateSurface() is only called once. BUG=b/25815604 R=hbos@webrtc.org Review URL: https://codereview.webrtc.org/1466133002 . Cr-Commit-Position: refs/heads/master@{#10769} --- .../app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java index f45d53b2a1..1d071129f0 100644 --- a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java +++ b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java @@ -173,7 +173,7 @@ public class SurfaceViewRenderer extends SurfaceView runOnRenderThread(new Runnable() { @Override public void run() { synchronized (layoutLock) { - if (isSurfaceCreated) { + if (isSurfaceCreated && !eglBase.hasSurface()) { eglBase.createSurface(getHolder().getSurface()); eglBase.makeCurrent(); // Necessary for YUV frames with odd width.