From 44abcb5e41c463f0b6f1c415a91052fe14058995 Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Wed, 6 Jul 2016 16:16:09 +0200 Subject: [PATCH] Android SurfaceViewRenderer: Fix eglBase null pointer exception Add null checks for eglBase, and detach the egl context in SurfaceViewRenderer.surfaceDestroyed(). BUG=webrtc:6032 R=sakal@webrtc.org Review URL: https://codereview.webrtc.org/2124983002 . Cr-Commit-Position: refs/heads/master@{#13396} --- .../java/src/org/webrtc/SurfaceViewRenderer.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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(); + } } }); }