Home | History | Annotate | Download | only in surfaces
      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