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 9 namespace cc { 10 11 SurfaceManager::SurfaceManager() 12 : next_surface_id_(1) { 13 } 14 15 SurfaceManager::~SurfaceManager() {} 16 17 SurfaceId SurfaceManager::RegisterAndAllocateIdForSurface(Surface* surface) { 18 DCHECK(surface); 19 int surface_id = next_surface_id_++; 20 surface_map_[surface_id] = surface; 21 return SurfaceId(surface_id); 22 } 23 24 void SurfaceManager::DeregisterSurface(SurfaceId surface_id) { 25 SurfaceMap::iterator it = surface_map_.find(surface_id.id); 26 DCHECK(it != surface_map_.end()); 27 surface_map_.erase(it); 28 } 29 30 Surface* SurfaceManager::GetSurfaceForId(SurfaceId surface_id) { 31 SurfaceMap::iterator it = surface_map_.find(surface_id.id); 32 if (it == surface_map_.end()) 33 return NULL; 34 return it->second; 35 } 36 37 } // namespace cc 38