Index: ppapi/shared_impl/media_stream_frame_buffer.cc |
diff --git a/ppapi/shared_impl/media_stream_frame_buffer.cc b/ppapi/shared_impl/media_stream_frame_buffer.cc |
index 624883039ecb881504d6b9aa33b0e6adbe6538cb..41586aa445019bdca422b7bd75b8e4b1fe7e1495 100644 |
--- a/ppapi/shared_impl/media_stream_frame_buffer.cc |
+++ b/ppapi/shared_impl/media_stream_frame_buffer.cc |
@@ -29,6 +29,7 @@ bool MediaStreamFrameBuffer::SetFrames( |
int32_t frame_size, |
scoped_ptr<base::SharedMemory> shm, |
bool enqueue_all_frames) { |
+ base::AutoLock lock(mutex_); |
DCHECK(shm); |
DCHECK(!shm_); |
DCHECK_GT(number_of_frames, 0); |
@@ -54,6 +55,7 @@ bool MediaStreamFrameBuffer::SetFrames( |
} |
int32_t MediaStreamFrameBuffer::DequeueFrame() { |
+ base::AutoLock lock(mutex_); |
if (frame_queue_.empty()) |
return PP_ERROR_FAILED; |
int32_t frame = frame_queue_.front(); |
@@ -64,12 +66,16 @@ int32_t MediaStreamFrameBuffer::DequeueFrame() { |
void MediaStreamFrameBuffer::EnqueueFrame(int32_t index) { |
DCHECK_GE(index, 0); |
DCHECK_LT(index, number_of_frames_); |
- frame_queue_.push_back(index); |
+ { |
+ base::AutoLock lock(mutex_); |
+ frame_queue_.push_back(index); |
+ } |
delegate_->OnNewFrameEnqueued(); |
} |
MediaStreamFrame* MediaStreamFrameBuffer::GetFramePointer( |
int32_t index) { |
+ base::AutoLock lock(mutex_); |
DCHECK_GE(index, 0); |
DCHECK_LT(index, number_of_frames_); |
return frames_[index]; |