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 4ecd4218fbf33416536029e024b8cedf40ee2730..8cc282604798f17aebf232334f5a0ab8257de080 100644 |
--- a/content/renderer/media/renderer_gpu_video_accelerator_factories.cc |
+++ b/content/renderer/media/renderer_gpu_video_accelerator_factories.cc |
@@ -19,7 +19,6 @@ |
namespace content { |
-RendererGpuVideoAcceleratorFactories::~RendererGpuVideoAcceleratorFactories() {} |
RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories( |
GpuChannelHost* gpu_channel_host, |
const scoped_refptr<base::MessageLoopProxy>& message_loop_proxy, |
@@ -27,7 +26,19 @@ RendererGpuVideoAcceleratorFactories::RendererGpuVideoAcceleratorFactories( |
: task_runner_(message_loop_proxy), |
gpu_channel_host_(gpu_channel_host), |
context_provider_(context_provider), |
- thread_safe_sender_(ChildThread::current()->thread_safe_sender()) {} |
+ thread_safe_sender_(ChildThread::current()->thread_safe_sender()) { |
+ task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&RendererGpuVideoAcceleratorFactories::BindContext, this)); |
+} |
+ |
+RendererGpuVideoAcceleratorFactories::~RendererGpuVideoAcceleratorFactories() {} |
+ |
+void RendererGpuVideoAcceleratorFactories::BindContext() { |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
+ if (!context_provider_->BindToCurrentThread()) |
+ context_provider_ = NULL; |
+} |
WebGraphicsContext3DCommandBufferImpl* |
RendererGpuVideoAcceleratorFactories::GetContext3d() { |