diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-26 06:39:28 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-26 06:39:28 +0000 |
commit | 628e3539f3caf339af7b30e885e713176bae823c (patch) | |
tree | fd5cb572ea42aea19afbed12988847d130fe272a /android_webview/native/aw_contents.cc | |
parent | 3a00ccc0450c037167aea4feb765e590202fc642 (diff) | |
download | chromium_src-628e3539f3caf339af7b30e885e713176bae823c.zip chromium_src-628e3539f3caf339af7b30e885e713176bae823c.tar.gz chromium_src-628e3539f3caf339af7b30e885e713176bae823c.tar.bz2 |
aw: Fix hardware teardown race
Reading IsHardwareInitialized in OnDetachedFromWindow on the UI thread
is unsafe as it can change after being read. Remove it and use whether
UI has hardware initialized instead.
BUG=388890
Review URL: https://codereview.chromium.org/348613004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279934 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/native/aw_contents.cc')
-rw-r--r-- | android_webview/native/aw_contents.cc | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc index dd673ad..de62339 100644 --- a/android_webview/native/aw_contents.cc +++ b/android_webview/native/aw_contents.cc @@ -358,7 +358,6 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) { if (!shared_renderer_state_.IsHardwareAllowed()) { hardware_renderer_.reset(); - shared_renderer_state_.SetHardwareInitialized(false); return; } @@ -366,9 +365,7 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) { return; if (!hardware_renderer_) { - DCHECK(!shared_renderer_state_.IsHardwareInitialized()); hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_)); - shared_renderer_state_.SetHardwareInitialized(true); } if (hardware_renderer_->DrawGL(state_restore.stencil_enabled(), @@ -866,7 +863,7 @@ void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); shared_renderer_state_.SetHardwareAllowed(false); - bool hardware_initialized = shared_renderer_state_.IsHardwareInitialized(); + bool hardware_initialized = browser_view_renderer_.hardware_enabled(); if (hardware_initialized) { bool draw_functor_succeeded = RequestDrawGL(NULL, true); if (!draw_functor_succeeded) { @@ -1138,10 +1135,6 @@ void AwContents::TrimMemory(JNIEnv* env, jint level, jboolean visible) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - - if (!shared_renderer_state_.IsHardwareInitialized()) - return; - browser_view_renderer_.TrimMemory(level, visible); } |