diff --git a/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java b/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java index 4b79fe49bf..6c8af2488a 100644 --- a/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java +++ b/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java @@ -171,9 +171,10 @@ public class SurfaceViewRenderer extends SurfaceView // |renderThreadHandler| is only created after |eglBase| is created in init(), so the // following code will only execute if eglBase != null. runOnRenderThread(new Runnable() { - @Override public void run() { + @Override + public void run() { synchronized (layoutLock) { - if (isSurfaceCreated && !eglBase.hasSurface()) { + if (eglBase != null && isSurfaceCreated && !eglBase.hasSurface()) { eglBase.createSurface(getHolder().getSurface()); eglBase.makeCurrent(); // Necessary for YUV frames with odd width. @@ -372,8 +373,12 @@ public class SurfaceViewRenderer extends SurfaceView surfaceSize.y = 0; } runOnRenderThread(new Runnable() { - @Override public void run() { - eglBase.releaseSurface(); + @Override + public void run() { + if (eglBase != null) { + eglBase.detachCurrent(); + eglBase.releaseSurface(); + } } }); }