Index: remoting/host/chromoting_host.cc |
diff --git a/remoting/host/chromoting_host.cc b/remoting/host/chromoting_host.cc |
index 9216fb0598df98e904c69676dd877686885b48b3..40da58c917e941d997b74b603798b88ae12767c3 100644 |
--- a/remoting/host/chromoting_host.cc |
+++ b/remoting/host/chromoting_host.cc |
@@ -60,15 +60,19 @@ ChromotingHost::ChromotingHost( |
DesktopEnvironmentFactory* desktop_environment_factory, |
scoped_ptr<protocol::SessionManager> session_manager, |
scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner, |
+ scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> network_task_runner) |
+ scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) |
: desktop_environment_factory_(desktop_environment_factory), |
session_manager_(session_manager.Pass()), |
audio_task_runner_(audio_task_runner), |
+ input_task_runner_(input_task_runner), |
video_capture_task_runner_(video_capture_task_runner), |
video_encode_task_runner_(video_encode_task_runner), |
network_task_runner_(network_task_runner), |
+ ui_task_runner_(ui_task_runner), |
signal_strategy_(signal_strategy), |
clients_count_(0), |
state_(kInitial), |
@@ -241,8 +245,12 @@ void ChromotingHost::OnSessionClosed(ClientSession* client) { |
OnClientDisconnected(client->client_jid())); |
} |
- client->Stop(base::Bind(&ChromotingHost::OnClientStopped, this)); |
+ client->Stop(); |
clients_.erase(it); |
+ |
+ --clients_count_; |
+ if (state_ == kStopping && !clients_count_) |
+ ShutdownFinish(); |
} |
void ChromotingHost::OnSessionSequenceNumber(ClientSession* session, |
@@ -314,9 +322,11 @@ void ChromotingHost::OnIncomingSession( |
scoped_refptr<ClientSession> client = new ClientSession( |
this, |
audio_task_runner_, |
+ input_task_runner_, |
video_capture_task_runner_, |
video_encode_task_runner_, |
network_task_runner_, |
+ ui_task_runner_, |
connection.Pass(), |
desktop_environment_factory_, |
max_session_duration_); |
@@ -380,14 +390,6 @@ void ChromotingHost::SetUiStrings(const UiStrings& ui_strings) { |
ui_strings_ = ui_strings; |
} |
-void ChromotingHost::OnClientStopped() { |
- DCHECK(network_task_runner_->BelongsToCurrentThread()); |
- |
- --clients_count_; |
- if (state_ == kStopping && !clients_count_) |
- ShutdownFinish(); |
-} |
- |
void ChromotingHost::ShutdownFinish() { |
DCHECK(network_task_runner_->BelongsToCurrentThread()); |
DCHECK_EQ(state_, kStopping); |