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 10 namespace cc { 11 12 SurfaceManager::SurfaceManager() { 13 thread_checker_.DetachFromThread(); 14 } 15 16 SurfaceManager::~SurfaceManager() { 17 DCHECK(thread_checker_.CalledOnValidThread()); 18 } 19 20 void 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 27 void 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 34 Surface* 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 42 void 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