Index: webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java |
diff --git a/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java b/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java |
index fd02fd583af83d8d7fcc1c5d81b910d92662c6a8..daeada85d74fe6a1d969f040b88c5c3738f2c56f 100644 |
--- a/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java |
+++ b/webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java |
@@ -145,8 +145,9 @@ public class SurfaceViewRenderer extends SurfaceView |
* |drawer|. It is allowed to call init() to reinitialize the renderer after a previous |
* init()/release() cycle. |
*/ |
- public void init(EglBase.Context sharedContext, RendererCommon.RendererEvents rendererEvents, |
- int[] configAttributes, RendererCommon.GlDrawer drawer) { |
+ public void init( |
+ final EglBase.Context sharedContext, RendererCommon.RendererEvents rendererEvents, |
+ final int[] configAttributes, RendererCommon.GlDrawer drawer) { |
synchronized (handlerLock) { |
if (renderThreadHandler != null) { |
throw new IllegalStateException(getResourceName() + "Already initialized"); |
@@ -156,8 +157,16 @@ public class SurfaceViewRenderer extends SurfaceView |
this.drawer = drawer; |
renderThread = new HandlerThread(TAG); |
renderThread.start(); |
- eglBase = EglBase.create(sharedContext, configAttributes); |
renderThreadHandler = new Handler(renderThread.getLooper()); |
+ // Create EGL context on the newly created render thread. It should be possibly to create the |
+ // context on this thread and make it current on the render thread, but this causes failure on |
+ // some Marvel based JB devices. |
perkj_webrtc
2016/09/14 07:02:05
nit: link comment to bug.
magjed_webrtc
2016/09/14 07:50:00
Done.
|
+ ThreadUtils.invokeAtFrontUninterruptibly(renderThreadHandler, new Runnable() { |
sakal
2016/09/14 07:10:05
Invoking is safer but do we need to do that? I thi
magjed_webrtc
2016/09/14 07:50:00
I'm worried about release() being called immediate
|
+ @Override |
+ public void run() { |
+ eglBase = EglBase.create(sharedContext, configAttributes); |
perkj_webrtc
2016/09/14 07:02:05
ok- so previously we created it on this thread and
magjed_webrtc
2016/09/14 07:50:00
Yes, which should be fine according to the documen
|
+ } |
+ }); |
} |
tryCreateEglSurface(); |
} |