Index: remoting/host/remoting_me2me_host.cc |
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc |
index 3e358a8b3dcc6c35ab7bbfc3d0b8e225286b9dee..5de61661ed8d0e26b43193693738ea9501ca6de2 100644 |
--- a/remoting/host/remoting_me2me_host.cc |
+++ b/remoting/host/remoting_me2me_host.cc |
@@ -275,7 +275,7 @@ class HostProcess |
scoped_ptr<LogToServer> log_to_server_; |
scoped_ptr<HostEventLogger> host_event_logger_; |
- scoped_refptr<ChromotingHost> host_; |
+ scoped_ptr<ChromotingHost> host_; |
// Used to keep this HostProcess alive until it is shutdown. |
scoped_refptr<HostProcess> self_; |
@@ -883,7 +883,7 @@ void HostProcess::StartHost() { |
network_settings.max_port = NetworkSettings::kDefaultMaxPort; |
} |
- host_ = new ChromotingHost( |
+ host_.reset(new ChromotingHost( |
signal_strategy_.get(), |
desktop_environment_factory_.get(), |
CreateHostSessionManager(network_settings, |
@@ -893,7 +893,7 @@ void HostProcess::StartHost() { |
context_->video_capture_task_runner(), |
context_->video_encode_task_runner(), |
context_->network_task_runner(), |
- context_->ui_task_runner()); |
+ context_->ui_task_runner())); |
// TODO(simonmorris): Get the maximum session duration from a policy. |
#if defined(OS_LINUX) |
@@ -974,7 +974,7 @@ void HostProcess::RestartHost() { |
DCHECK_EQ(state_, HOST_STARTED); |
state_ = HOST_STOPPING_TO_RESTART; |
- host_->Shutdown(base::Bind(&HostProcess::ShutdownOnNetworkThread, this)); |
+ ShutdownOnNetworkThread(); |
} |
void HostProcess::ShutdownHost(int exit_code) { |
@@ -990,7 +990,7 @@ void HostProcess::ShutdownHost(int exit_code) { |
case HOST_STARTED: |
state_ = HOST_STOPPING; |
- host_->Shutdown(base::Bind(&HostProcess::ShutdownOnNetworkThread, this)); |
+ ShutdownOnNetworkThread(); |
break; |
case HOST_STOPPING_TO_RESTART: |
@@ -1007,7 +1007,11 @@ void HostProcess::ShutdownHost(int exit_code) { |
void HostProcess::ShutdownOnNetworkThread() { |
DCHECK(context_->network_task_runner()->BelongsToCurrentThread()); |
- host_ = NULL; |
+ if (host_) { |
+ host_->Shutdown(); |
+ host_.reset(); |
+ } |
+ |
curtaining_host_observer_.reset(); |
host_event_logger_.reset(); |
log_to_server_.reset(); |