diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 05:01:08 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 05:01:08 +0000 |
commit | fc4c7b0dbd725a861e85e3a404f1ac01363ad592 (patch) | |
tree | 6326b3b1f298b052d56074a2f963bf1381c02f22 | |
parent | f8de3a90f25636d78dbd4af93d44ee0593258e29 (diff) | |
download | chromium_src-fc4c7b0dbd725a861e85e3a404f1ac01363ad592.zip chromium_src-fc4c7b0dbd725a861e85e3a404f1ac01363ad592.tar.gz chromium_src-fc4c7b0dbd725a861e85e3a404f1ac01363ad592.tar.bz2 |
aw: Add lock back to SharedRendererState
It is true that kModeDraw will be called with UI blocked. But it is
possible for kModeProcess to be called asynchronously. We don't access
the state object in kModeProcess, but better be safe than sorry.
BUG=
NOTRY=true
Review URL: https://codereview.chromium.org/260213002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267072 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | android_webview/browser/shared_renderer_state.cc | 4 | ||||
-rw-r--r-- | android_webview/browser/shared_renderer_state.h | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/android_webview/browser/shared_renderer_state.cc b/android_webview/browser/shared_renderer_state.cc index fb17afb..1e82438 100644 --- a/android_webview/browser/shared_renderer_state.cc +++ b/android_webview/browser/shared_renderer_state.cc @@ -47,20 +47,24 @@ void SharedRendererState::ClientRequestDrawGLOnUIThread() { void SharedRendererState::SetCompositorOnUiThread( content::SynchronousCompositor* compositor) { + base::AutoLock lock(lock_); DCHECK(ui_loop_->BelongsToCurrentThread()); compositor_ = compositor; } content::SynchronousCompositor* SharedRendererState::GetCompositor() { + base::AutoLock lock(lock_); DCHECK(compositor_); return compositor_; } void SharedRendererState::SetDrawGLInput(const DrawGLInput& input) { + base::AutoLock lock(lock_); draw_gl_input_ = input; } DrawGLInput SharedRendererState::GetDrawGLInput() const { + base::AutoLock lock(lock_); return draw_gl_input_; } diff --git a/android_webview/browser/shared_renderer_state.h b/android_webview/browser/shared_renderer_state.h index a7ec60c..ec21663 100644 --- a/android_webview/browser/shared_renderer_state.h +++ b/android_webview/browser/shared_renderer_state.h @@ -6,6 +6,7 @@ #define ANDROID_WEBVIEW_BROWSER_SHARED_RENDERER_STATE_H_ #include "base/message_loop/message_loop_proxy.h" +#include "base/synchronization/lock.h" #include "content/public/browser/android/synchronous_compositor.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/vector2d.h" @@ -64,6 +65,7 @@ class SharedRendererState { base::WeakPtr<SharedRendererState> ui_thread_weak_ptr_; // Accessed by both UI and RT thread. + mutable base::Lock lock_; content::SynchronousCompositor* compositor_; DrawGLInput draw_gl_input_; }; |