Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Unified Diff: webrtc/api/android/java/src/org/webrtc/SurfaceViewRenderer.java

Issue 2339573002: Android SurfaceViewRenderer: Create EGL context on render thread (Closed)
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..eec6add9324e4b3ec848730993e2d04466ca10e4 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. 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();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698