Android SurfaceViewRenderer: Create EGL context on render thread
This CL avoids eglMakeCurrent failing on some problematic Marvel based Jelly Bean devices. BUG=webrtc:6350 R=perkj@webrtc.org, sakal@webrtc.org Review URL: https://codereview.webrtc.org/2339573002 . Cr-Commit-Position: refs/heads/master@{#14234}
This commit is contained in:
parent
ec62374ccd
commit
4ed5b9f62d
@ -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. https://bugs.chromium.org/p/webrtc/issues/detail?id=6350.
|
||||
ThreadUtils.invokeAtFrontUninterruptibly(renderThreadHandler, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
eglBase = EglBase.create(sharedContext, configAttributes);
|
||||
}
|
||||
});
|
||||
}
|
||||
tryCreateEglSurface();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user