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

Unified Diff: content/renderer/render_widget.cc

Issue 1317743002: cc: Implement shared worker contexts. (v1) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: invalidate weak ptrs when detaching context from thread Created 5 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/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_++;

Powered by Google App Engine
This is Rietveld 408576698