summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-05 03:41:51 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-05 03:41:51 +0000
commitd15c370b5043f7959e05fe6be68599093d1554fd (patch)
treeee7dddf523060e3ee744ebd67229ccbba30e6b9d /content
parentf855c985101f59c6da2c602a0f8abd27b844ad60 (diff)
downloadchromium_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.cc2
-rw-r--r--content/browser/renderer_host/media/video_capture_controller.h4
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_;