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 #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