Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: content/renderer/media/renderer_gpu_video_accelerator_factories.cc

Issue 23440015: Fix webrtc HW encode deadlock scenarios. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698