diff options
Diffstat (limited to 'remoting/host/remoting_me2me_host.cc')
-rw-r--r-- | remoting/host/remoting_me2me_host.cc | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc index 444d5ab..f880803 100644 --- a/remoting/host/remoting_me2me_host.cc +++ b/remoting/host/remoting_me2me_host.cc @@ -19,7 +19,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" #include "build/build_config.h" #include "crypto/nss_util.h" @@ -260,6 +259,8 @@ class HostProcess void ShutdownOnNetworkThread(); + void OnPolicyWatcherShutdown(); + // Crashes the process in response to a daemon's request. The daemon passes // the location of the code that detected the fatal error resulted in this // request. @@ -524,8 +525,8 @@ void HostProcess::OnConfigUpdated( // already loaded so PolicyWatcher has to be started here. Separate policy // loading from policy verifications and move |policy_watcher_| // initialization to StartOnNetworkThread(). - policy_watcher_.reset( - policy_hack::PolicyWatcher::Create(context_->file_task_runner())); + policy_watcher_ = policy_hack::PolicyWatcher::Create( + nullptr, context_->network_task_runner()); policy_watcher_->StartWatching( base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this))); } else { @@ -1411,24 +1412,25 @@ void HostProcess::ShutdownOnNetworkThread() { state_ = HOST_STOPPED; if (policy_watcher_.get()) { - base::WaitableEvent done_event(true, false); - policy_watcher_->StopWatching(&done_event); - done_event.Wait(); - policy_watcher_.reset(); + policy_watcher_->StopWatching( + base::Bind(&HostProcess::OnPolicyWatcherShutdown, this)); + } else { + OnPolicyWatcherShutdown(); } - - config_watcher_.reset(); - - // Complete the rest of shutdown on the main thread. - context_->ui_task_runner()->PostTask( - FROM_HERE, - base::Bind(&HostProcess::ShutdownOnUiThread, this)); } else { // This method is only called in STOPPING_TO_RESTART and STOPPING states. NOTREACHED(); } } +void HostProcess::OnPolicyWatcherShutdown() { + policy_watcher_.reset(); + + // Complete the rest of shutdown on the main thread. + context_->ui_task_runner()->PostTask( + FROM_HERE, base::Bind(&HostProcess::ShutdownOnUiThread, this)); +} + void HostProcess::OnCrash(const std::string& function_name, const std::string& file_name, const int& line_number) { |