Index: content/renderer/media/video_capture_impl.cc |
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc |
index aa428d8c8bcf856af7b361f3fefe4221e293114a..ebc7a6bfecfe2702a4365e07e2e0e030e5b8f837 100644 |
--- a/content/renderer/media/video_capture_impl.cc |
+++ b/content/renderer/media/video_capture_impl.cc |
@@ -321,6 +321,16 @@ void VideoCaptureImpl::DoStateChangedOnCaptureThread(VideoCaptureState state) { |
clients_.clear(); |
state_ = VIDEO_CAPTURE_STATE_ERROR; |
break; |
+ case VIDEO_CAPTURE_STATE_ENDED: |
+ DVLOG(1) << "OnStateChanged: ended!, device_id = " << device_id_; |
+ STLDeleteValues(&cached_dibs_); |
+ for (ClientInfo::iterator it = clients_.begin(); |
+ it != clients_.end(); ++it) { |
+ it->first->OnRemoved(this); |
+ } |
+ clients_.clear(); |
+ state_ = VIDEO_CAPTURE_STATE_ENDED; |
+ break; |
default: |
break; |
} |