diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-20 06:35:53 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-20 06:35:53 +0000 |
commit | fa9be115c9e06fecabf8837fdec0d836f0ae30a2 (patch) | |
tree | 88820c8419404dca8d1ce80ef41a4292f26c9975 /android_webview | |
parent | 38a995d99dae51ddb7e46717529ff88e5afd6e88 (diff) | |
download | chromium_src-fa9be115c9e06fecabf8837fdec0d836f0ae30a2.zip chromium_src-fa9be115c9e06fecabf8837fdec0d836f0ae30a2.tar.gz chromium_src-fa9be115c9e06fecabf8837fdec0d836f0ae30a2.tar.bz2 |
[Android WebView] Early out DrawGL if not attached to window
We release GL when we are detached from window, so calling DrawGL
while detached is causing crash.
Also take this opportunity move GL initialization to Draw mode and
not invoke mode.
Internal bug b/10839187
BUG=
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/24200004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224307 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r-- | android_webview/browser/in_process_view_renderer.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/android_webview/browser/in_process_view_renderer.cc b/android_webview/browser/in_process_view_renderer.cc index 31ca5dc..c343fcf 100644 --- a/android_webview/browser/in_process_view_renderer.cc +++ b/android_webview/browser/in_process_view_renderer.cc @@ -370,12 +370,10 @@ void InProcessViewRenderer::DrawGL(AwDrawGLInfo* draw_info) { gpu::InProcessCommandBuffer::ProcessGpuWorkOnCurrentThread(); ScopedAllowGL allow_gl; - if (attached_to_window_ && compositor_ && !hardware_initialized_) { - if (InitializeHwDraw()) { - last_egl_context_ = current_context; - } else { - return; - } + if (!attached_to_window_) { + TRACE_EVENT_INSTANT0( + "android_webview", "EarlyOut_NotAttached", TRACE_EVENT_SCOPE_THREAD); + return; } if (draw_info->mode == AwDrawGLInfo::kModeProcess) { @@ -384,6 +382,17 @@ void InProcessViewRenderer::DrawGL(AwDrawGLInfo* draw_info) { return; } + if (compositor_ && !hardware_initialized_) { + if (InitializeHwDraw()) { + last_egl_context_ = current_context; + } else { + TRACE_EVENT_INSTANT0( + "android_webview", "EarlyOut_HwInitFail", TRACE_EVENT_SCOPE_THREAD); + LOG(ERROR) << "WebView hardware initialization failed"; + return; + } + } + UpdateCachedGlobalVisibleRect(); if (cached_global_visible_rect_.IsEmpty()) { TRACE_EVENT_INSTANT0("android_webview", |