| Index: ppapi/proxy/plugin_globals.cc
|
| ===================================================================
|
| --- ppapi/proxy/plugin_globals.cc (revision 186938)
|
| +++ ppapi/proxy/plugin_globals.cc (working copy)
|
| @@ -49,36 +49,40 @@
|
| PluginGlobals::PluginGlobals()
|
| : ppapi::PpapiGlobals(),
|
| plugin_proxy_delegate_(NULL),
|
| - callback_tracker_(new CallbackTracker) {
|
| + 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
|
| +
|
| 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_);
|
| - {
|
| - 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;
|
| - }
|
| + // 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;
|
| }
|
|
|
| @@ -127,7 +131,9 @@
|
| }
|
|
|
| base::Lock* PluginGlobals::GetProxyLock() {
|
| - return &proxy_lock_;
|
| + if (enable_threading_)
|
| + return &proxy_lock_;
|
| + return NULL;
|
| }
|
|
|
| void PluginGlobals::LogWithSource(PP_Instance instance,
|
|
|