| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index a071d1477ad0e8e6c6e6962b95285a313368c79f..69e5fe5aa0b2a14a8c388f4ca6c40de4ddded4bb 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_++;
|
|
|