| Index: content/renderer/media/renderer_gpu_video_accelerator_factories.cc
|
| diff --git a/content/renderer/media/renderer_gpu_video_accelerator_factories.cc b/content/renderer/media/renderer_gpu_video_accelerator_factories.cc
|
| index f586497f484a8b83135f7ec82c213096ddf76aac..6aa56f73c8ae4169ce1d12c8e01b8dffcc6ccc0b 100644
|
| --- a/content/renderer/media/renderer_gpu_video_accelerator_factories.cc
|
| +++ b/content/renderer/media/renderer_gpu_video_accelerator_factories.cc
|
| @@ -23,11 +23,10 @@ RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories(
|
| const scoped_refptr<base::MessageLoopProxy>& message_loop,
|
| WebGraphicsContext3DCommandBufferImpl* context)
|
| : message_loop_(message_loop),
|
| - main_message_loop_(base::MessageLoopProxy::current()),
|
| gpu_channel_host_(gpu_channel_host),
|
| + thread_safe_sender_(ChildThread::current()->thread_safe_sender()),
|
| aborted_waiter_(true, false),
|
| - message_loop_async_waiter_(false, false),
|
| - render_thread_async_waiter_(false, false) {
|
| + message_loop_async_waiter_(false, false) {
|
| // |context| is only required to support HW-accelerated decode.
|
| if (!context)
|
| return;
|
| @@ -55,8 +54,7 @@ RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories(
|
|
|
| RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories()
|
| : aborted_waiter_(true, false),
|
| - message_loop_async_waiter_(false, false),
|
| - render_thread_async_waiter_(false, false) {}
|
| + message_loop_async_waiter_(false, false) {}
|
|
|
| void RendererGpuVideoAcceleratorFactories::AsyncGetContext(
|
| WebGraphicsContext3DCommandBufferImpl* context) {
|
| @@ -363,30 +361,7 @@ void RendererGpuVideoAcceleratorFactories::AsyncReadPixels(
|
|
|
| base::SharedMemory* RendererGpuVideoAcceleratorFactories::CreateSharedMemory(
|
| size_t size) {
|
| - if (main_message_loop_->BelongsToCurrentThread()) {
|
| - return ChildThread::current()->AllocateSharedMemory(size);
|
| - }
|
| - main_message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&RendererGpuVideoAcceleratorFactories::AsyncCreateSharedMemory,
|
| - this,
|
| - size));
|
| -
|
| - base::WaitableEvent* objects[] = {&aborted_waiter_,
|
| - &render_thread_async_waiter_};
|
| - if (base::WaitableEvent::WaitMany(objects, arraysize(objects)) == 0)
|
| - return NULL;
|
| - return shared_memory_segment_.release();
|
| -}
|
| -
|
| -void RendererGpuVideoAcceleratorFactories::AsyncCreateSharedMemory(
|
| - size_t size) {
|
| - DCHECK_EQ(base::MessageLoop::current(),
|
| - ChildThread::current()->message_loop());
|
| -
|
| - shared_memory_segment_.reset(
|
| - ChildThread::current()->AllocateSharedMemory(size));
|
| - render_thread_async_waiter_.Signal();
|
| + return ChildThread::AllocateSharedMemory(size, thread_safe_sender_.get());
|
| }
|
|
|
| scoped_refptr<base::MessageLoopProxy>
|
| @@ -405,9 +380,9 @@ RendererGpuVideoAcceleratorFactories::Clone() {
|
| scoped_refptr<RendererGpuVideoAcceleratorFactories> factories =
|
| new RendererGpuVideoAcceleratorFactories();
|
| factories->message_loop_ = message_loop_;
|
| - factories->main_message_loop_ = main_message_loop_;
|
| factories->gpu_channel_host_ = gpu_channel_host_;
|
| factories->context_ = context_;
|
| + factories->thread_safe_sender_ = thread_safe_sender_;
|
| return factories;
|
| }
|
|
|
|
|