Trigger open callback after data channel or track callback

This commit is contained in:
Paul-Louis Ageneau
2021-04-14 18:27:33 +02:00
parent b353fbe44d
commit d62166e1a7

View File

@ -973,17 +973,19 @@ string PeerConnection::localBundleMid() const {
void PeerConnection::triggerDataChannel(weak_ptr<DataChannel> weakDataChannel) { void PeerConnection::triggerDataChannel(weak_ptr<DataChannel> weakDataChannel) {
auto dataChannel = weakDataChannel.lock(); auto dataChannel = weakDataChannel.lock();
if (dataChannel) if (dataChannel) {
dataChannel->openCallback = nullptr; // might be set internally
mPendingDataChannels.push(std::move(dataChannel)); mPendingDataChannels.push(std::move(dataChannel));
}
triggerPendingDataChannels(); triggerPendingDataChannels();
} }
void PeerConnection::triggerTrack(weak_ptr<Track> weakTrack) { void PeerConnection::triggerTrack(weak_ptr<Track> weakTrack) {
auto track = weakTrack.lock(); auto track = weakTrack.lock();
if (track) if (track) {
track->openCallback = nullptr; // might be set internally
mPendingTracks.push(std::move(track)); mPendingTracks.push(std::move(track));
}
triggerPendingTracks(); triggerPendingTracks();
} }
@ -995,6 +997,7 @@ void PeerConnection::triggerPendingDataChannels() {
auto impl = std::move(*next); auto impl = std::move(*next);
dataChannelCallback(std::make_shared<rtc::DataChannel>(impl)); dataChannelCallback(std::make_shared<rtc::DataChannel>(impl));
impl->triggerOpen();
} }
} }
@ -1006,6 +1009,7 @@ void PeerConnection::triggerPendingTracks() {
auto impl = std::move(*next); auto impl = std::move(*next);
trackCallback(std::make_shared<rtc::Track>(std::move(impl))); trackCallback(std::make_shared<rtc::Track>(std::move(impl)));
impl->triggerOpen();
} }
} }