Chromium Code Reviews| 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..40325beafcf2ae28b2a12f1c51f403cb46b2a569 100644 |
| --- a/content/renderer/media/renderer_gpu_video_accelerator_factories.cc |
| +++ b/content/renderer/media/renderer_gpu_video_accelerator_factories.cc |
| @@ -51,6 +51,12 @@ RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories( |
| // returns, so our PostTask will run first. |
| context)); |
| message_loop_async_waiter_.Wait(); |
| + |
| + shm_alloc_thread_.reset( |
| + new base::Thread("RendererGpuVideoAccelFactsSHMAllocThread")); |
| + CHECK(shm_alloc_thread_->Start()); |
| + |
| + shm_alloc_message_loop_ = shm_alloc_thread_->message_loop_proxy(); |
| } |
| RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories() |
| @@ -363,10 +369,10 @@ void RendererGpuVideoAcceleratorFactories::AsyncReadPixels( |
| base::SharedMemory* RendererGpuVideoAcceleratorFactories::CreateSharedMemory( |
| size_t size) { |
| - if (main_message_loop_->BelongsToCurrentThread()) { |
| + if (shm_alloc_message_loop_->BelongsToCurrentThread()) { |
| return ChildThread::current()->AllocateSharedMemory(size); |
| } |
| - main_message_loop_->PostTask( |
| + shm_alloc_message_loop_->PostTask( |
| FROM_HERE, |
| base::Bind(&RendererGpuVideoAcceleratorFactories::AsyncCreateSharedMemory, |
| this, |
| @@ -381,11 +387,10 @@ base::SharedMemory* RendererGpuVideoAcceleratorFactories::CreateSharedMemory( |
| void RendererGpuVideoAcceleratorFactories::AsyncCreateSharedMemory( |
| size_t size) { |
| - DCHECK_EQ(base::MessageLoop::current(), |
| - ChildThread::current()->message_loop()); |
| + DCHECK(shm_alloc_message_loop_->BelongsToCurrentThread()); |
| - shared_memory_segment_.reset( |
| - ChildThread::current()->AllocateSharedMemory(size)); |
| + shared_memory_segment_.reset(new base::SharedMemory()); |
| + CHECK(shared_memory_segment_->CreateAndMapAnonymous(size)); |
|
Ami GONE FROM CHROMIUM
2013/09/04 20:47:56
Do you even sandbox, bro?
How is this working insi
Pawel Osciak
2013/09/05 05:46:33
Real men don't sandbox. Done for all the others.
|
| render_thread_async_waiter_.Signal(); |
|
Ami GONE FROM CHROMIUM
2013/09/04 20:47:56
This is not legit considering it's no longer the r
Pawel Osciak
2013/09/05 05:46:33
Done.
|
| } |
| @@ -408,6 +413,7 @@ RendererGpuVideoAcceleratorFactories::Clone() { |
| factories->main_message_loop_ = main_message_loop_; |
| factories->gpu_channel_host_ = gpu_channel_host_; |
| factories->context_ = context_; |
| + factories->shm_alloc_message_loop_ = shm_alloc_message_loop_; |
| return factories; |
| } |