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; |
} |