| Index: cc/output/gl_renderer.cc
|
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
|
| index fb1ee183c2a86feaffa6e4c294cb047b98c25384..cf833dca88a2a79edaa8cae6f0229827a936cda8 100644
|
| --- a/cc/output/gl_renderer.cc
|
| +++ b/cc/output/gl_renderer.cc
|
| @@ -418,6 +418,12 @@ GLRenderer::~GLRenderer() {
|
| }
|
|
|
| CleanupSharedObjects();
|
| +
|
| + if (context_visibility_) {
|
| + auto* context_provider = output_surface_->context_provider();
|
| + auto* cache_controller = context_provider->CacheController();
|
| + cache_controller->ClientBecameNotVisible(std::move(context_visibility_));
|
| + }
|
| }
|
|
|
| const RendererCapabilitiesImpl& GLRenderer::Capabilities() const {
|
| @@ -440,15 +446,15 @@ void GLRenderer::DidChangeVisibility() {
|
|
|
| PrepareGeometry(NO_BINDING);
|
|
|
| - // Handle cleanup of resources on the ContextProvider. The compositor
|
| - // ContextProvider is not shared, so always pass 0 for the client_id.
|
| - // TODO(crbug.com/487471): Update this when we share compositor
|
| - // ContextProviders.
|
| - context_support_->SetClientVisible(0 /* client_id */, visible_);
|
| - bool aggressively_free_resources = !context_support_->AnyClientsVisible();
|
| - if (aggressively_free_resources)
|
| - output_surface_->context_provider()->DeleteCachedResources();
|
| - context_support_->SetAggressivelyFreeResources(aggressively_free_resources);
|
| + auto* context_provider = output_surface_->context_provider();
|
| + auto* cache_controller = context_provider->CacheController();
|
| + if (visible_) {
|
| + DCHECK(!context_visibility_);
|
| + context_visibility_ = cache_controller->ClientBecameVisible();
|
| + } else {
|
| + DCHECK(context_visibility_);
|
| + cache_controller->ClientBecameNotVisible(std::move(context_visibility_));
|
| + }
|
| }
|
|
|
| void GLRenderer::ReleaseRenderPassTextures() { render_pass_textures_.clear(); }
|
|
|