Index: remoting/protocol/connection_to_client.cc |
diff --git a/remoting/protocol/connection_to_client.cc b/remoting/protocol/connection_to_client.cc |
index 03ee1fec34bf4da5915c2a05a5a0451352f64e6e..3441f4991231082dbffa492b8afaf092d34e2172 100644 |
--- a/remoting/protocol/connection_to_client.cc |
+++ b/remoting/protocol/connection_to_client.cc |
@@ -68,6 +68,11 @@ VideoStub* ConnectionToClient::video_stub() { |
return video_writer_.get(); |
} |
+AudioStub* ConnectionToClient::audio_stub() { |
+ DCHECK(CalledOnValidThread()); |
+ return audio_writer_.get(); |
+} |
+ |
// Return pointer to ClientStub. |
ClientStub* ConnectionToClient::client_stub() { |
DCHECK(CalledOnValidThread()); |
@@ -120,6 +125,12 @@ void ConnectionToClient::OnSessionStateChange(Session::State state) { |
video_writer_->Init(session_.get(), base::Bind( |
&ConnectionToClient::OnChannelInitialized, base::Unretained(this))); |
+ audio_writer_ = AudioWriter::Create(session_->config()); |
+ if (audio_writer_.get()) { |
+ audio_writer_->Init(session_.get(), base::Bind( |
+ &ConnectionToClient::OnChannelInitialized, base::Unretained(this))); |
+ } |
+ |
// Notify the handler after initializing the channels, so that |
// ClientSession can get a client clipboard stub. |
handler_->OnConnectionAuthenticated(this); |
@@ -156,11 +167,17 @@ void ConnectionToClient::OnChannelInitialized(bool successful) { |
void ConnectionToClient::NotifyIfChannelsReady() { |
DCHECK(CalledOnValidThread()); |
- if (control_dispatcher_.get() && control_dispatcher_->is_connected() && |
- event_dispatcher_.get() && event_dispatcher_->is_connected() && |
- video_writer_.get() && video_writer_->is_connected()) { |
- handler_->OnConnectionChannelsConnected(this); |
+ if (!control_dispatcher_.get() || !control_dispatcher_->is_connected()) |
+ return; |
+ if (!event_dispatcher_.get() || !event_dispatcher_->is_connected()) |
+ return; |
+ if (!video_writer_.get() || !video_writer_->is_connected()) |
+ return; |
+ if ((!audio_writer_.get() || !audio_writer_->is_connected()) && |
+ session_->config().is_audio_enabled()) { |
+ return; |
} |
+ handler_->OnConnectionChannelsConnected(this); |
} |
void ConnectionToClient::Close(ErrorCode error) { |
@@ -172,6 +189,7 @@ void ConnectionToClient::CloseChannels() { |
control_dispatcher_.reset(); |
event_dispatcher_.reset(); |
video_writer_.reset(); |
+ audio_writer_.reset(); |
} |
} // namespace protocol |