| Index: talk/app/webrtc/peerconnection.cc
|
| diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc
|
| index 4c54d6f5feb62c2b4f1b5f25da091ac30d8e4439..d7f7ca1f4768a80597f9e1748bcbee983aa1f8cd 100644
|
| --- a/talk/app/webrtc/peerconnection.cc
|
| +++ b/talk/app/webrtc/peerconnection.cc
|
| @@ -614,6 +614,14 @@ void PeerConnection::SetLocalDescription(
|
| PostSetSessionDescriptionFailure(observer, error);
|
| return;
|
| }
|
| +
|
| + // This is necessary because an audio/video channel may have been previously
|
| + // destroyed by removing it from the remote description, which would NOT
|
| + // destroy the local handler. So upon receiving a new local description,
|
| + // we may need to tell that local track handler to connect the capturer
|
| + // to the now re-created audio/video channel.
|
| + stream_handler_container_->RestartAllLocalTracks();
|
| +
|
| SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer);
|
| signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg);
|
| }
|
| @@ -637,6 +645,14 @@ void PeerConnection::SetRemoteDescription(
|
| PostSetSessionDescriptionFailure(observer, error);
|
| return;
|
| }
|
| +
|
| + // This is necessary because an audio/video channel may have been previously
|
| + // destroyed by removing it from the local description, which would NOT
|
| + // destroy the remote handler. So upon receiving a new remote description,
|
| + // we may need to tell that remote track handler to connect the renderer
|
| + // to the now re-created audio/video channel.
|
| + stream_handler_container_->RestartAllRemoteTracks();
|
| +
|
| SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer);
|
| signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg);
|
| }
|
|
|