Index: ppapi/proxy/plugin_globals.cc |
diff --git a/ppapi/proxy/plugin_globals.cc b/ppapi/proxy/plugin_globals.cc |
index 2e18ac5fb6e8a762d69120f32dedba29f0d17b92..3083832b341a354a75ef750db0ed9847abc81c27 100644 |
--- a/ppapi/proxy/plugin_globals.cc |
+++ b/ppapi/proxy/plugin_globals.cc |
@@ -49,40 +49,36 @@ PluginGlobals* PluginGlobals::plugin_globals_ = NULL; |
PluginGlobals::PluginGlobals() |
: ppapi::PpapiGlobals(), |
plugin_proxy_delegate_(NULL), |
- callback_tracker_(new CallbackTracker), |
- loop_for_main_thread_( |
- new MessageLoopResource(MessageLoopResource::ForMainThread())) { |
-#if defined(ENABLE_PEPPER_THREADING) |
- enable_threading_ = true; |
-#else |
- enable_threading_ = false; |
-#endif |
- |
+ callback_tracker_(new CallbackTracker) { |
DCHECK(!plugin_globals_); |
plugin_globals_ = this; |
+ |
+ // ResourceTracker asserts that we have the lock when we add new resources, |
+ // so we lock when creating the MessageLoopResource even though there is no |
+ // chance of race conditions. |
+ ProxyAutoLock lock; |
+ loop_for_main_thread_ = |
+ new MessageLoopResource(MessageLoopResource::ForMainThread()); |
} |
PluginGlobals::PluginGlobals(PerThreadForTest per_thread_for_test) |
: ppapi::PpapiGlobals(per_thread_for_test), |
plugin_proxy_delegate_(NULL), |
callback_tracker_(new CallbackTracker) { |
-#if defined(ENABLE_PEPPER_THREADING) |
- enable_threading_ = true; |
-#else |
- enable_threading_ = false; |
-#endif |
DCHECK(!plugin_globals_); |
} |
PluginGlobals::~PluginGlobals() { |
DCHECK(plugin_globals_ == this || !plugin_globals_); |
- // Release the main-thread message loop. We should have the last reference |
- // count, so this will delete the MessageLoop resource. We do this before |
- // we clear plugin_globals_, because the Resource destructor tries to access |
- // this PluginGlobals. |
- DCHECK(!loop_for_main_thread_ || loop_for_main_thread_->HasOneRef()); |
- loop_for_main_thread_ = NULL; |
- |
+ { |
+ ProxyAutoLock lock; |
+ // Release the main-thread message loop. We should have the last reference |
+ // count, so this will delete the MessageLoop resource. We do this before |
+ // we clear plugin_globals_, because the Resource destructor tries to access |
+ // this PluginGlobals. |
+ DCHECK(!loop_for_main_thread_ || loop_for_main_thread_->HasOneRef()); |
+ loop_for_main_thread_ = NULL; |
+ } |
plugin_globals_ = NULL; |
} |
@@ -131,9 +127,7 @@ void PluginGlobals::PreCacheFontForFlash(const void* logfontw) { |
} |
base::Lock* PluginGlobals::GetProxyLock() { |
- if (enable_threading_) |
- return &proxy_lock_; |
- return NULL; |
+ return &proxy_lock_; |
} |
void PluginGlobals::LogWithSource(PP_Instance instance, |