Bug 1421819: only init Call object in Tranceivers. r?bwc draft
authorNils Ohlmeier [:drno] <drno@ohlmeier.org>
Thu, 30 Nov 2017 17:46:32 -0800
changeset 706026 74806ab2d0a94bcb58092ab7f3f3fda4c52091c0
parent 706025 a21f4e2ce5186e2dc9ee411b07e9348866b4ef30
child 742539 44aa4c8065ae7f1cf078606fb438609570662009
push id91667
push userdrno@ohlmeier.org
push dateFri, 01 Dec 2017 01:47:18 +0000
reviewersbwc
bugs1421819
milestone59.0a1
Bug 1421819: only init Call object in Tranceivers. r?bwc MozReview-Commit-ID: 7Rhk9470BVO
media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
@@ -45,23 +45,16 @@ namespace mozilla {
 using namespace dom;
 
 static const char* pcmLogTag = "PeerConnectionMedia";
 #ifdef LOGTAG
 #undef LOGTAG
 #endif
 #define LOGTAG pcmLogTag
 
-//XXX(pkerr) What about bitrate settings? Going with the defaults for now.
-RefPtr<WebRtcCallWrapper>
-CreateCall()
-{
-  return WebRtcCallWrapper::Create();
-}
-
 NS_IMETHODIMP PeerConnectionMedia::ProtocolProxyQueryHandler::
 OnProxyAvailable(nsICancelable *request,
                  nsIChannel *aChannel,
                  nsIProxyInfo *proxyinfo,
                  nsresult result) {
 
   if (!pcm_->mProxyRequest) {
     // PeerConnectionMedia is no longer waiting
@@ -289,19 +282,16 @@ nsresult PeerConnectionMedia::Init(const
   }
   if (NS_FAILED(rv =
       mIceCtxHdlr->ctx()->SetResolver(mDNSResolver->AllocateResolver()))) {
     CSFLogError(LOGTAG, "%s: Failed to get dns resolver", __FUNCTION__);
     return rv;
   }
   ConnectSignals(mIceCtxHdlr->ctx().get());
 
-  // This webrtc:Call instance will be shared by audio and video media conduits.
-  mCall = CreateCall();
-
   return NS_OK;
 }
 
 void
 PeerConnectionMedia::EnsureTransports(const JsepSession& aSession)
 {
   for (const auto& transceiver : aSession.GetTransceivers()) {
     if (!transceiver->HasLevel()) {
@@ -1140,16 +1130,20 @@ PeerConnectionMedia::ShutdownMediaTransp
 
 nsresult
 PeerConnectionMedia::AddTransceiver(
     JsepTransceiver* aJsepTransceiver,
     DOMMediaStream& aReceiveStream,
     dom::MediaStreamTrack* aSendTrack,
     RefPtr<TransceiverImpl>* aTransceiverImpl)
 {
+  if (!mCall) {
+    mCall = WebRtcCallWrapper::Create();
+  }
+
   RefPtr<TransceiverImpl> transceiver = new TransceiverImpl(
       mParent->GetHandle(),
       aJsepTransceiver,
       mMainThread.get(),
       mSTSThread.get(),
       aReceiveStream,
       aSendTrack,
       mCall.get());