| 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)));
|
| - }
|
| - }
|
|
|
| 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();
|
| }
|
| }
|
|
|
|
|