1// Copyright 2014 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 "cc/surfaces/surface_manager.h" 6 7#include "base/logging.h" 8#include "cc/surfaces/surface.h" 9 10namespace cc { 11 12SurfaceManager::SurfaceManager() { 13 thread_checker_.DetachFromThread(); 14} 15 16SurfaceManager::~SurfaceManager() { 17 DCHECK(thread_checker_.CalledOnValidThread()); 18} 19 20void SurfaceManager::RegisterSurface(Surface* surface) { 21 DCHECK(thread_checker_.CalledOnValidThread()); 22 DCHECK(surface); 23 DCHECK(!surface_map_.count(surface->surface_id())); 24 surface_map_[surface->surface_id()] = surface; 25} 26 27void SurfaceManager::DeregisterSurface(SurfaceId surface_id) { 28 DCHECK(thread_checker_.CalledOnValidThread()); 29 SurfaceMap::iterator it = surface_map_.find(surface_id); 30 DCHECK(it != surface_map_.end()); 31 surface_map_.erase(it); 32} 33 34Surface* SurfaceManager::GetSurfaceForId(SurfaceId surface_id) { 35 DCHECK(thread_checker_.CalledOnValidThread()); 36 SurfaceMap::iterator it = surface_map_.find(surface_id); 37 if (it == surface_map_.end()) 38 return NULL; 39 return it->second; 40} 41 42void SurfaceManager::SurfaceModified(SurfaceId surface_id) { 43 DCHECK(thread_checker_.CalledOnValidThread()); 44 FOR_EACH_OBSERVER( 45 SurfaceDamageObserver, observer_list_, OnSurfaceDamaged(surface_id)); 46} 47 48} // namespace cc 49