summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 06:35:53 +0000
committerboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 06:35:53 +0000
commitfa9be115c9e06fecabf8837fdec0d836f0ae30a2 (patch)
tree88820c8419404dca8d1ce80ef41a4292f26c9975 /android_webview
parent38a995d99dae51ddb7e46717529ff88e5afd6e88 (diff)
downloadchromium_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.cc21
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",