Chromium Code Reviews| Index: cc/surfaces/surface_manager.cc |
| diff --git a/cc/surfaces/surface_manager.cc b/cc/surfaces/surface_manager.cc |
| index b03b81e7ba8c8a050c68fe3bfd91ca10e51d8039..1c7d1d362976ef76ba0bdc18e2ef6ad82fcdc962 100644 |
| --- a/cc/surfaces/surface_manager.cc |
| +++ b/cc/surfaces/surface_manager.cc |
| @@ -80,6 +80,16 @@ std::string SurfaceManager::SurfaceReferencesToString() { |
| } |
| #endif |
| +void SurfaceManager::SetDependencyTracker( |
| + std::unique_ptr<SurfaceDependencyTracker> dependency_tracker) { |
| + dependency_tracker_ = std::move(dependency_tracker); |
| +} |
| + |
| +void SurfaceManager::RequestSurfaceResolution(Surface* pending_surface) { |
| + if (dependency_tracker_) |
| + dependency_tracker_->RequestSurfaceResolution(pending_surface); |
| +} |
| + |
| void SurfaceManager::RegisterSurface(Surface* surface) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| DCHECK(surface); |
| @@ -148,10 +158,10 @@ void SurfaceManager::AddSurfaceReference(const SurfaceId& parent_id, |
| // We trust that |parent_id| either exists or is about to exist, since is not |
| // sent over IPC. We don't trust |child_id|, since it is sent over IPC. |
| - if (surface_map_.count(child_id) == 0) { |
| - DLOG(ERROR) << "No surface in map for " << child_id.ToString(); |
| - return; |
| - } |
| + // if (surface_map_.count(child_id) == 0) { |
|
vmpstr
2017/02/07 22:46:20
<_<
Fady Samuel
2017/02/08 00:52:50
Heh fixed in a later patchset. Sorry about that.
|
| + // DLOG(ERROR) << "No surface in map for " << child_id.ToString(); |
| + // return; |
| + //} |
| // There could be a temporary reference to |child_id| which we should now |
| // remove because a real reference is being added to it. To find out whether |
| @@ -217,6 +227,7 @@ void SurfaceManager::RemoveSurfaceReference(const SurfaceId& parent_id, |
| } |
| RemoveSurfaceReferenceImpl(parent_id, child_id); |
| + GarbageCollectSurfaces(); |
| } |
| void SurfaceManager::AddSurfaceReferences( |
| @@ -597,10 +608,19 @@ void SurfaceManager::SurfaceReferencesToStringImpl(const SurfaceId& surface_id, |
| *str << surface->surface_id().ToString(); |
| *str << (surface->destroyed() ? " destroyed " : " live "); |
| + if (surface->GetPendingFrame().has_value()) { |
| + // This provides the surface size from the root render pass. |
| + const CompositorFrame& frame = surface->GetPendingFrame().value(); |
| + *str << "pending " |
| + << frame.render_pass_list.back()->output_rect.size().ToString() |
| + << " "; |
| + } |
| + |
| if (surface->HasFrame()) { |
| // This provides the surface size from the root render pass. |
| const CompositorFrame& frame = surface->GetEligibleFrame(); |
| - *str << frame.render_pass_list.back()->output_rect.size().ToString(); |
| + *str << "active " |
| + << frame.render_pass_list.back()->output_rect.size().ToString(); |
| } |
| } else { |
| *str << surface_id; |