summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 05:01:08 +0000
committerboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 05:01:08 +0000
commitfc4c7b0dbd725a861e85e3a404f1ac01363ad592 (patch)
tree6326b3b1f298b052d56074a2f963bf1381c02f22
parentf8de3a90f25636d78dbd4af93d44ee0593258e29 (diff)
downloadchromium_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.cc4
-rw-r--r--android_webview/browser/shared_renderer_state.h2
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_;
};