1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/viz/client/frame_evictor.h" 6 7 #include "base/logging.h" 8 9 namespace viz { 10 FrameEvictor(FrameEvictorClient * client)11FrameEvictor::FrameEvictor(FrameEvictorClient* client) : client_(client) {} 12 ~FrameEvictor()13FrameEvictor::~FrameEvictor() { 14 OnSurfaceDiscarded(); 15 } 16 OnNewSurfaceEmbedded()17void FrameEvictor::OnNewSurfaceEmbedded() { 18 has_surface_ = true; 19 FrameEvictionManager::GetInstance()->AddFrame(this, visible_); 20 } 21 OnSurfaceDiscarded()22void FrameEvictor::OnSurfaceDiscarded() { 23 FrameEvictionManager::GetInstance()->RemoveFrame(this); 24 has_surface_ = false; 25 } 26 SetVisible(bool visible)27void FrameEvictor::SetVisible(bool visible) { 28 if (visible_ == visible) 29 return; 30 visible_ = visible; 31 if (has_surface_) { 32 if (visible) 33 FrameEvictionManager::GetInstance()->LockFrame(this); 34 else 35 FrameEvictionManager::GetInstance()->UnlockFrame(this); 36 } 37 } 38 EvictCurrentFrame()39void FrameEvictor::EvictCurrentFrame() { 40 client_->EvictDelegatedFrame(); 41 } 42 43 } // namespace viz 44