| 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
|
|
|