Commit afeb5995 authored by ananta@chromium.org's avatar ananta@chromium.org

Fix a deadlock in the GPU Video decoding code in the renderer which would occur when the renderer

thread was waiting to get the next frame for renderering which attempts to grab the VideoRendererBase lock
and the gpu video decoder thread would wait on the renderer thread to execute a task while holding the above
lock.

Fix is to post task the demuxer_stream_->Read call to ensure that the lock is released by the gpu video decoder
thread.

BUG=129010
R=fischman
Review URL: https://chromiumcodereview.appspot.com/10408043

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138120 0039d316-1c4b-4281-b951-d872f2087c98
parent 06c0c06f
...@@ -477,8 +477,9 @@ void GpuVideoDecoder::EnsureDemuxOrDecode() { ...@@ -477,8 +477,9 @@ void GpuVideoDecoder::EnsureDemuxOrDecode() {
if (demuxer_read_in_progress_) if (demuxer_read_in_progress_)
return; return;
demuxer_read_in_progress_ = true; demuxer_read_in_progress_ = true;
demuxer_stream_->Read(base::Bind( gvd_loop_proxy_->PostTask(FROM_HERE, base::Bind(
&GpuVideoDecoder::RequestBufferDecode, this)); &DemuxerStream::Read, demuxer_stream_.get(),
base::Bind(&GpuVideoDecoder::RequestBufferDecode, this)));
} }
void GpuVideoDecoder::NotifyFlushDone() { void GpuVideoDecoder::NotifyFlushDone() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment