Index: android_webview/browser/in_process_view_renderer.cc |
diff --git a/android_webview/browser/in_process_view_renderer.cc b/android_webview/browser/in_process_view_renderer.cc |
index 39f88378692f1cbf4ea4a53304630eb81720eba7..f6b67354f7da43245c98aef5e758c4e97f864af8 100644 |
--- a/android_webview/browser/in_process_view_renderer.cc |
+++ b/android_webview/browser/in_process_view_renderer.cc |
@@ -171,6 +171,15 @@ bool ScopedAllowGL::allow_gl = false; |
base::LazyInstance<GLViewRendererManager>::Leaky g_view_renderer_manager; |
+void RequestProcessGLOnUIThread() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ InProcessViewRenderer* renderer = static_cast<InProcessViewRenderer*>( |
+ g_view_renderer_manager.Get().GetMostRecentlyDrawn()); |
+ if (!renderer || !renderer->RequestProcessGL()) { |
+ LOG(ERROR) << "Failed to request DrawGL. Probably going to deadlock."; |
joth
2013/08/21 18:37:29
"Failed to request GL process. Deadlock likely. "
|
+ } |
+} |
+ |
} // namespace |
// Called from different threads! |
@@ -178,11 +187,8 @@ static void ScheduleGpuWork() { |
if (ScopedAllowGL::IsAllowed()) { |
gpu::InProcessCommandBuffer::ProcessGpuWorkOnCurrentThread(); |
} else { |
- InProcessViewRenderer* renderer = static_cast<InProcessViewRenderer*>( |
- g_view_renderer_manager.Get().GetMostRecentlyDrawn()); |
- if (!renderer || !renderer->RequestProcessGL()) { |
- LOG(ERROR) << "Failed to request DrawGL. Probably going to deadlock."; |
- } |
+ BrowserThread::PostTask( |
joth
2013/08/21 18:37:29
How about just calling RequestProcessGL() here, th
|
+ BrowserThread::UI, FROM_HERE, base::Bind(&RequestProcessGLOnUIThread)); |
} |
} |