• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
SurfaceManager()12 SurfaceManager::SurfaceManager() {
13   thread_checker_.DetachFromThread();
14 }
15 
~SurfaceManager()16 SurfaceManager::~SurfaceManager() {
17   DCHECK(thread_checker_.CalledOnValidThread());
18 }
19 
RegisterSurface(Surface * surface)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 
DeregisterSurface(SurfaceId surface_id)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 
GetSurfaceForId(SurfaceId surface_id)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 
SurfaceModified(SurfaceId surface_id)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