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