summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/plugin_globals.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy/plugin_globals.cc')
-rw-r--r--ppapi/proxy/plugin_globals.cc42
1 files changed, 18 insertions, 24 deletions
diff --git a/ppapi/proxy/plugin_globals.cc b/ppapi/proxy/plugin_globals.cc
index 2e18ac5f..3083832 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,