diff options
author | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-05 03:41:51 +0000 |
---|---|---|
committer | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-05 03:41:51 +0000 |
commit | d15c370b5043f7959e05fe6be68599093d1554fd (patch) | |
tree | ee7dddf523060e3ee744ebd67229ccbba30e6b9d /content | |
parent | f855c985101f59c6da2c602a0f8abd27b844ad60 (diff) | |
download | chromium_src-d15c370b5043f7959e05fe6be68599093d1554fd.zip chromium_src-d15c370b5043f7959e05fe6be68599093d1554fd.tar.gz chromium_src-d15c370b5043f7959e05fe6be68599093d1554fd.tar.bz2 |
fix racing condition by setting frame_info_ on caller thread.
BUG=103004
TEST=trybots
Review URL: http://codereview.chromium.org/8477006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108772 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/media/video_capture_controller.cc | 2 | ||||
-rw-r--r-- | content/browser/renderer_host/media/video_capture_controller.h | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc index 2bfd1ab..51bfa5c 100644 --- a/content/browser/renderer_host/media/video_capture_controller.cc +++ b/content/browser/renderer_host/media/video_capture_controller.cc @@ -330,6 +330,7 @@ void VideoCaptureController::OnError() { void VideoCaptureController::OnFrameInfo( const media::VideoCaptureDevice::Capability& info) { + frame_info_= info; BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(&VideoCaptureController::DoFrameInfoOnIOThread, @@ -402,7 +403,6 @@ void VideoCaptureController::DoFrameInfoOnIOThread( } return; } - frame_info_= info; frame_info_available_ = true; for (ControllerClients::iterator client_it = controller_clients_.begin(); diff --git a/content/browser/renderer_host/media/video_capture_controller.h b/content/browser/renderer_host/media/video_capture_controller.h index c964a8e..b732552 100644 --- a/content/browser/renderer_host/media/video_capture_controller.h +++ b/content/browser/renderer_host/media/video_capture_controller.h @@ -121,7 +121,11 @@ class VideoCaptureController // The parameter that currently used for the capturing. media::VideoCaptureParams current_params_; + // It's modified on caller thread, assuming there is only one OnFrameInfo() + // call per StartCapture(). media::VideoCaptureDevice::Capability frame_info_; + + // It's accessed only on IO thread. bool frame_info_available_; media_stream::VideoCaptureManager* video_capture_manager_; |