Chromium Code Reviews| 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)); |
| } |
| } |