CaptureManager: Don't stop a capturer at UnregisterVideoCapturer if it did not start in the first place.
This fixes a bug where, if the VideoCapturer failed to start under certain circumstances, the capture manager would cause a callback saying that the capturer stopped even though it never started in the first place. A VERIFY check in VideoSource::SetState would then cause a crash since the state was set to kEnded when it was already in state kEnded (SetState only allows being called when the state changes). I only noticed this bug while doing a mistake in a separate CL. Not sure how to reliably reproduce said bug on a working build, but I have previously had camera hardware issues where it couldn't start the camera which resulted in the SetState kEnded -> kEnded crash. Hopefully this will fix that. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/51039004 Cr-Commit-Position: refs/heads/master@{#9259}
This commit is contained in:
@@ -375,8 +375,10 @@ void CaptureManager::UnregisterVideoCapturer(
|
||||
// for the CaptureManager it doesn't matter as it will no longer receive any
|
||||
// frames from the VideoCapturer.
|
||||
SignalCapturerStateChange.stop(video_capturer->SignalStateChange);
|
||||
video_capturer->Stop();
|
||||
SignalCapturerStateChange(video_capturer, CS_STOPPED);
|
||||
if (video_capturer->IsRunning()) {
|
||||
video_capturer->Stop();
|
||||
SignalCapturerStateChange(video_capturer, CS_STOPPED);
|
||||
}
|
||||
}
|
||||
|
||||
bool CaptureManager::StartWithBestCaptureFormat(
|
||||
|
||||
Reference in New Issue
Block a user