Index: cc/output/output_surface.cc |
diff --git a/cc/output/output_surface.cc b/cc/output/output_surface.cc |
index a597a87d8456bc65f3ce763d469db9e7e776ed7f..f0a1faf6f813bb1a11173f635c92fef80b9c455d 100644 |
--- a/cc/output/output_surface.cc |
+++ b/cc/output/output_surface.cc |
@@ -107,10 +107,6 @@ OutputSurface::~OutputSurface() { |
context_provider_->SetMemoryPolicyChangedCallback( |
ContextProvider::MemoryPolicyChangedCallback()); |
} |
- if (worker_context_provider_.get()) { |
- worker_context_provider_->SetLostContextCallback( |
- ContextProvider::LostContextCallback()); |
- } |
} |
bool OutputSurface::HasExternalStencilTest() const { |
@@ -132,17 +128,8 @@ bool OutputSurface::BindToClient(OutputSurfaceClient* client) { |
} |
} |
- if (success && worker_context_provider_.get()) { |
+ if (success && worker_context_provider_.get()) |
success = worker_context_provider_->BindToCurrentThread(); |
- if (success) { |
- worker_context_provider_->SetupLock(); |
- // The destructor resets the context lost callback, so base::Unretained |
- // is safe, as long as the worker threads stop using the context before |
- // the output surface is destroyed. |
- worker_context_provider_->SetLostContextCallback(base::Bind( |
- &OutputSurface::DidLoseOutputSurface, base::Unretained(this))); |
reveman
2015/07/24 22:53:54
I had to remove this to be able to share worker co
|
- } |
- } |
if (!success) |
client_ = NULL; |
@@ -217,11 +204,7 @@ void OutputSurface::SetWorkerContextShouldAggressivelyFreeResources( |
"OutputSurface::SetWorkerContextShouldAggressivelyFreeResources", |
"aggressively_free_resources", aggressively_free_resources); |
if (auto* context_provider = worker_context_provider()) { |
- // The context lock must be held while accessing the worker context. |
- base::AutoLock context_lock(*context_provider->GetLock()); |
- |
- // Allow context to bind to current thread. |
- context_provider->DetachFromThread(); |
+ ContextProvider::ScopedContextLock scoped_context(context_provider); |
if (aggressively_free_resources) { |
context_provider->DeleteCachedResources(); |
@@ -231,9 +214,6 @@ void OutputSurface::SetWorkerContextShouldAggressivelyFreeResources( |
context_support->SetAggressivelyFreeResources( |
aggressively_free_resources); |
} |
- |
- // Allow context to bind to other threads. |
- context_provider->DetachFromThread(); |
} |
} |