Browse Source

Trigger track callback on new track

Paul-Louis Ageneau 4 years ago
parent
commit
810cafe09b
2 changed files with 3 additions and 6 deletions
  1. 1 1
      include/rtc/peerconnection.hpp
  2. 2 5
      src/peerconnection.cpp

+ 1 - 1
include/rtc/peerconnection.hpp

@@ -135,7 +135,7 @@ private:
 	void processLocalDescription(Description description);
 	void processLocalDescription(Description description);
 	void processLocalCandidate(Candidate candidate);
 	void processLocalCandidate(Candidate candidate);
 	void triggerDataChannel(std::weak_ptr<DataChannel> weakDataChannel);
 	void triggerDataChannel(std::weak_ptr<DataChannel> weakDataChannel);
-	void triggerTrack(std::weak_ptr<Track> weakTrack);
+	void triggerTrack(std::shared_ptr<Track> track);
 	bool changeState(State state);
 	bool changeState(State state);
 	bool changeGatheringState(GatheringState state);
 	bool changeGatheringState(GatheringState state);
 
 

+ 2 - 5
src/peerconnection.cpp

@@ -655,6 +655,7 @@ void PeerConnection::incomingTrack(Description::Media description) {
 	if (mTracks.find(description.mid()) == mTracks.end()) {
 	if (mTracks.find(description.mid()) == mTracks.end()) {
 		auto track = std::make_shared<Track>(std::move(description));
 		auto track = std::make_shared<Track>(std::move(description));
 		mTracks.emplace(std::make_pair(track->mid(), track));
 		mTracks.emplace(std::make_pair(track->mid(), track));
+		triggerTrack(std::move(track));
 	}
 	}
 }
 }
 
 
@@ -768,11 +769,7 @@ void PeerConnection::triggerDataChannel(weak_ptr<DataChannel> weakDataChannel) {
 	    [this, dataChannel = std::move(dataChannel)]() { mDataChannelCallback(dataChannel); });
 	    [this, dataChannel = std::move(dataChannel)]() { mDataChannelCallback(dataChannel); });
 }
 }
 
 
-void PeerConnection::triggerTrack(std::weak_ptr<Track> weakTrack) {
-	auto track = weakTrack.lock();
-	if (!track)
-		return;
-
+void PeerConnection::triggerTrack(std::shared_ptr<Track> track) {
 	mProcessor->enqueue([this, track = std::move(track)]() { mTrackCallback(track); });
 	mProcessor->enqueue([this, track = std::move(track)]() { mTrackCallback(track); });
 }
 }