Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 285ca7f68e4847b0a02ed4ef02767444c6537b33..90e394b429663b23a9f8571e3fbb4616e6faaabe 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -1022,10 +1022,15 @@ scoped_ptr<cc::OutputSurface> RenderWidget::CreateOutputSurface(bool fallback) { |
worker_context_provider = ContextProviderCommandBuffer::Create( |
CreateGraphicsContext3D(false), RENDER_WORKER_CONTEXT); |
- if (!worker_context_provider.get()) { |
+ if (!worker_context_provider.get() || |
+ !worker_context_provider->BindToCurrentThread()) { |
// Cause the compositor to wait and try again. |
return scoped_ptr<cc::OutputSurface>(); |
} |
+ worker_context_provider->SetupLock(); |
+ // Detach from thread to allow context to be destroyed on a different |
+ // thread without being used. |
+ worker_context_provider->DetachFromThread(); |
} |
uint32 output_surface_id = next_output_surface_id_++; |