OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/surfaces/surface_dependency_tracker.h" | 5 #include "cc/surfaces/surface_dependency_tracker.h" |
6 | 6 |
7 #include "cc/surfaces/surface.h" | 7 #include "cc/surfaces/surface.h" |
8 #include "cc/surfaces/surface_info.h" | 8 #include "cc/surfaces/surface_info.h" |
9 #include "cc/surfaces/surface_manager.h" | 9 #include "cc/surfaces/surface_manager.h" |
10 | 10 |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 } | 152 } |
153 | 153 |
154 void SurfaceDependencyTracker::OnSurfaceActivated(Surface* surface) { | 154 void SurfaceDependencyTracker::OnSurfaceActivated(Surface* surface) { |
155 surface->RemoveObserver(this); | 155 surface->RemoveObserver(this); |
156 observed_surfaces_by_id_.erase(surface->surface_id()); | 156 observed_surfaces_by_id_.erase(surface->surface_id()); |
157 NotifySurfaceIdAvailable(surface->surface_id()); | 157 NotifySurfaceIdAvailable(surface->surface_id()); |
158 } | 158 } |
159 | 159 |
160 void SurfaceDependencyTracker::OnSurfaceDependenciesChanged( | 160 void SurfaceDependencyTracker::OnSurfaceDependenciesChanged( |
161 Surface* surface, | 161 Surface* surface, |
162 const SurfaceDependencies& added_dependencies, | 162 const base::flat_set<SurfaceId>& added_dependencies, |
163 const SurfaceDependencies& removed_dependencies) { | 163 const base::flat_set<SurfaceId>& removed_dependencies) { |
164 // Update the |blocked_surfaces_from_dependency_| map with the changes in | 164 // Update the |blocked_surfaces_from_dependency_| map with the changes in |
165 // dependencies. | 165 // dependencies. |
166 for (const SurfaceId& surface_id : added_dependencies) | 166 for (const SurfaceId& surface_id : added_dependencies) |
167 blocked_surfaces_from_dependency_[surface_id].insert(surface->surface_id()); | 167 blocked_surfaces_from_dependency_[surface_id].insert(surface->surface_id()); |
168 | 168 |
169 for (const SurfaceId& surface_id : removed_dependencies) { | 169 for (const SurfaceId& surface_id : removed_dependencies) { |
170 auto it = blocked_surfaces_from_dependency_.find(surface_id); | 170 auto it = blocked_surfaces_from_dependency_.find(surface_id); |
171 it->second.erase(surface->surface_id()); | 171 it->second.erase(surface->surface_id()); |
172 if (it->second.empty()) | 172 if (it->second.empty()) |
173 blocked_surfaces_from_dependency_.erase(it); | 173 blocked_surfaces_from_dependency_.erase(it); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 // A blocked surface may have been garbage collected during dependency | 214 // A blocked surface may have been garbage collected during dependency |
215 // resolution. | 215 // resolution. |
216 DCHECK(!observed_surfaces_by_id_.count(blocked_surface_by_id)); | 216 DCHECK(!observed_surfaces_by_id_.count(blocked_surface_by_id)); |
217 continue; | 217 continue; |
218 } | 218 } |
219 blocked_surface->NotifySurfaceIdAvailable(surface_id); | 219 blocked_surface->NotifySurfaceIdAvailable(surface_id); |
220 } | 220 } |
221 } | 221 } |
222 | 222 |
223 } // namespace cc | 223 } // namespace cc |
OLD | NEW |