| Index: content/renderer/media/media_stream_video_capturer_source.cc
|
| diff --git a/content/renderer/media/media_stream_video_capturer_source.cc b/content/renderer/media/media_stream_video_capturer_source.cc
|
| index b04383dbee35ef5b385cf36e076df458d8832aa2..10c6fdea3729fb3defe625f6b1296de84de0bc7b 100644
|
| --- a/content/renderer/media/media_stream_video_capturer_source.cc
|
| +++ b/content/renderer/media/media_stream_video_capturer_source.cc
|
| @@ -367,7 +367,7 @@ void LocalVideoCapturerSource::OnStateUpdate(VideoCaptureState state) {
|
|
|
| case VIDEO_CAPTURE_STATE_PAUSED:
|
| case VIDEO_CAPTURE_STATE_RESUMED:
|
| - // Not applicable to reporting on device start success/failure.
|
| + // Not applicable to reporting on device starts or errors.
|
| break;
|
| }
|
| }
|
| @@ -482,18 +482,25 @@ void MediaStreamVideoCapturerSource::StartSourceImpl(
|
| SetPowerLineFrequencyParamFromConstraints(constraints, &new_params);
|
| }
|
|
|
| - source_->StartCapture(new_params,
|
| - frame_callback,
|
| - base::Bind(&MediaStreamVideoCapturerSource::OnStarted,
|
| - base::Unretained(this)));
|
| + is_capture_starting_ = true;
|
| + source_->StartCapture(
|
| + new_params, frame_callback,
|
| + base::Bind(&MediaStreamVideoCapturerSource::OnRunStateChanged,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void MediaStreamVideoCapturerSource::StopSourceImpl() {
|
| source_->StopCapture();
|
| }
|
|
|
| -void MediaStreamVideoCapturerSource::OnStarted(bool result) {
|
| - OnStartDone(result ? MEDIA_DEVICE_OK : MEDIA_DEVICE_TRACK_START_FAILURE);
|
| +void MediaStreamVideoCapturerSource::OnRunStateChanged(bool is_running) {
|
| + if (is_capture_starting_) {
|
| + OnStartDone(is_running ? MEDIA_DEVICE_OK
|
| + : MEDIA_DEVICE_TRACK_START_FAILURE);
|
| + is_capture_starting_ = false;
|
| + } else if (!is_running) {
|
| + StopSource();
|
| + }
|
| }
|
|
|
| const char*
|
|
|