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 8 namespace viz { 9 FrameEvictor(FrameEvictorClient * client)10FrameEvictor::FrameEvictor(FrameEvictorClient* client) : client_(client) {} 11 ~FrameEvictor()12FrameEvictor::~FrameEvictor() { 13 OnSurfaceDiscarded(); 14 } 15 OnNewSurfaceEmbedded()16void FrameEvictor::OnNewSurfaceEmbedded() { 17 has_surface_ = true; 18 FrameEvictionManager::GetInstance()->AddFrame(this, visible_); 19 } 20 OnSurfaceDiscarded()21void FrameEvictor::OnSurfaceDiscarded() { 22 FrameEvictionManager::GetInstance()->RemoveFrame(this); 23 has_surface_ = false; 24 } 25 SetVisible(bool visible)26void FrameEvictor::SetVisible(bool visible) { 27 if (visible_ == visible) 28 return; 29 visible_ = visible; 30 if (has_surface_) { 31 if (visible) 32 FrameEvictionManager::GetInstance()->LockFrame(this); 33 else 34 FrameEvictionManager::GetInstance()->UnlockFrame(this); 35 } 36 } 37 EvictCurrentFrame()38void FrameEvictor::EvictCurrentFrame() { 39 client_->EvictDelegatedFrame(); 40 } 41 42 } // namespace viz 43