author | Bryce Van Dyk <bvandyk@mozilla.com> |
Tue, 11 Jul 2017 09:14:28 +1200 | |
changeset 368383 | 1362c0928dc15e9a9cd6fa7ed9ee57a14365286e |
parent 368382 | 9dd2156225d334fc9c164017b7c5068273bfb7ca |
child 368384 | 68d5e6c5ee1b6b15ed5c4db7aab041e227414293 |
push id | 32162 |
push user | cbook@mozilla.com |
push date | Wed, 12 Jul 2017 09:07:26 +0000 |
treeherder | mozilla-central@09a4282d1172 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jesup |
bugs | 1378826 |
milestone | 56.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/media/MediaRecorder.cpp +++ b/dom/media/MediaRecorder.cpp @@ -454,16 +454,24 @@ public: void NotifyTrackAdded(const RefPtr<MediaStreamTrack>& aTrack) override { LOG(LogLevel::Warning, ("Session.NotifyTrackAdded %p Raising error due to track set change", this)); DoSessionEndTask(NS_ERROR_ABORT); } void NotifyTrackRemoved(const RefPtr<MediaStreamTrack>& aTrack) override { + // Handle possible early removal of direct video listener + if (mEncoder) { + RefPtr<VideoStreamTrack> videoTrack = aTrack->AsVideoStreamTrack(); + if (videoTrack) { + videoTrack->RemoveDirectListener(mEncoder->GetVideoSink()); + } + } + RefPtr<MediaInputPort> foundInputPort; for (RefPtr<MediaInputPort> inputPort : mInputPorts) { if (aTrack->IsForwardedThrough(inputPort)) { foundInputPort = inputPort; break; } }