| Index: remoting/host/remoting_me2me_host.cc
|
| diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
|
| index f880803c2c3388a96b66652c85f1ad8c4df16951..444d5aba3219f776eb867d9192663162ccd34c48 100644
|
| --- a/remoting/host/remoting_me2me_host.cc
|
| +++ b/remoting/host/remoting_me2me_host.cc
|
| @@ -19,6 +19,7 @@
|
| #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"
|
| @@ -259,8 +260,6 @@
|
|
|
| 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.
|
| @@ -525,8 +524,8 @@
|
| // already loaded so PolicyWatcher has to be started here. Separate policy
|
| // loading from policy verifications and move |policy_watcher_|
|
| // initialization to StartOnNetworkThread().
|
| - policy_watcher_ = policy_hack::PolicyWatcher::Create(
|
| - nullptr, context_->network_task_runner());
|
| + policy_watcher_.reset(
|
| + policy_hack::PolicyWatcher::Create(context_->file_task_runner()));
|
| policy_watcher_->StartWatching(
|
| base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)));
|
| } else {
|
| @@ -1412,23 +1411,22 @@
|
| state_ = HOST_STOPPED;
|
|
|
| if (policy_watcher_.get()) {
|
| - policy_watcher_->StopWatching(
|
| - base::Bind(&HostProcess::OnPolicyWatcherShutdown, this));
|
| - } else {
|
| - OnPolicyWatcherShutdown();
|
| + base::WaitableEvent done_event(true, false);
|
| + policy_watcher_->StopWatching(&done_event);
|
| + done_event.Wait();
|
| + policy_watcher_.reset();
|
| }
|
| +
|
| + 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,
|
|
|