| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index 907815bda93dbe9d9621150a3a2e3bb9f57f2ea2..32f9aac09f7231324fb3a7bdc665140c4e847f7d 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -112,6 +112,13 @@ void Display::SetVisible(bool visible) {
|
| if (scheduler_)
|
| scheduler_->SetVisible(visible);
|
| visible_ = visible;
|
| +
|
| + if (!visible) {
|
| + // Damage tracker needs a full reset as renderer resources are dropped when
|
| + // not visible.
|
| + if (aggregator_ && !current_surface_id_.is_null())
|
| + aggregator_->SetFullDamageForSurface(current_surface_id_);
|
| + }
|
| }
|
|
|
| void Display::Resize(const gfx::Size& size) {
|
| @@ -172,20 +179,20 @@ void Display::InitializeRenderer() {
|
| if (output_surface_->context_provider()) {
|
| DCHECK(texture_mailbox_deleter_);
|
| renderer_ = base::MakeUnique<GLRenderer>(
|
| - this, &settings_, output_surface_.get(), resource_provider_.get(),
|
| + &settings_, output_surface_.get(), resource_provider_.get(),
|
| texture_mailbox_deleter_.get(), settings_.highp_threshold_min);
|
| } else if (output_surface_->vulkan_context_provider()) {
|
| #if defined(ENABLE_VULKAN)
|
| DCHECK(texture_mailbox_deleter_);
|
| renderer_ = base::MakeUnique<VulkanRenderer>(
|
| - this, &settings_, output_surface_.get(), resource_provider_.get(),
|
| + &settings_, output_surface_.get(), resource_provider_.get(),
|
| texture_mailbox_deleter_.get(), settings_.highp_threshold_min);
|
| #else
|
| NOTREACHED();
|
| #endif
|
| } else {
|
| auto renderer = base::MakeUnique<SoftwareRenderer>(
|
| - this, &settings_, output_surface_.get(), resource_provider_.get());
|
| + &settings_, output_surface_.get(), resource_provider_.get());
|
| software_renderer_ = renderer.get();
|
| renderer_ = std::move(renderer);
|
| }
|
| @@ -398,11 +405,6 @@ void Display::SetTreeActivationCallback(const base::Closure& callback) {
|
| NOTREACHED();
|
| }
|
|
|
| -void Display::SetFullRootLayerDamage() {
|
| - if (aggregator_ && !current_surface_id_.is_null())
|
| - aggregator_->SetFullDamageForSurface(current_surface_id_);
|
| -}
|
| -
|
| void Display::OnSurfaceDamaged(const SurfaceId& surface_id, bool* changed) {
|
| if (aggregator_ &&
|
| aggregator_->previous_contained_surfaces().count(surface_id)) {
|
|
|