diff options
Diffstat (limited to 'ipc/mojo')
-rw-r--r-- | ipc/mojo/OWNERS | 4 | ||||
-rw-r--r-- | ipc/mojo/scoped_ipc_support.cc | 31 |
2 files changed, 13 insertions, 22 deletions
diff --git a/ipc/mojo/OWNERS b/ipc/mojo/OWNERS index 584a1f6..ae47a47 100644 --- a/ipc/mojo/OWNERS +++ b/ipc/mojo/OWNERS @@ -1,2 +1,4 @@ +amistry@chromium.org morrita@chromium.org -viettrungluu@chromium.org
\ No newline at end of file +rockot@chromium.org +viettrungluu@chromium.org diff --git a/ipc/mojo/scoped_ipc_support.cc b/ipc/mojo/scoped_ipc_support.cc index 5729463..2465aa2 100644 --- a/ipc/mojo/scoped_ipc_support.cc +++ b/ipc/mojo/scoped_ipc_support.cc @@ -31,10 +31,7 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate { ~IPCSupportInitializer() override { DCHECK(!observer_); } void Init(scoped_refptr<base::TaskRunner> io_thread_task_runner); - void ShutDown(); - - // Forces the initializer to shut down even if scopers are still holding it. - void ForceShutdown(); + void ShutDown(bool force); private: // This watches for destruction of the MessageLoop that IPCSupportInitializer @@ -52,7 +49,7 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate { private: // base::MessageLoop::DestructionObserver: void WillDestroyCurrentMessageLoop() override { - initializer_->ForceShutdown(); + initializer_->ShutDown(true); } IPCSupportInitializer* initializer_; @@ -112,24 +109,16 @@ void IPCSupportInitializer::Init( } } -void IPCSupportInitializer::ShutDown() { - { - base::AutoLock locker(lock_); - if (shutting_down_ || was_shut_down_) - return; - DCHECK(init_count_ > 0); - if (init_count_ > 1) { - init_count_--; - return; - } - } - ForceShutdown(); -} - -void IPCSupportInitializer::ForceShutdown() { +void IPCSupportInitializer::ShutDown(bool force) { base::AutoLock locker(lock_); if (shutting_down_ || was_shut_down_) return; + DCHECK(init_count_ > 0); + if (init_count_ > 1 && !force) { + init_count_--; + return; + } + shutting_down_ = true; if (base::MessageLoop::current() && base::MessageLoop::current()->task_runner() == io_thread_task_runner_) { @@ -173,7 +162,7 @@ ScopedIPCSupport::ScopedIPCSupport( } ScopedIPCSupport::~ScopedIPCSupport() { - ipc_support_initializer.Get().ShutDown(); + ipc_support_initializer.Get().ShutDown(false); } } // namespace IPC |