Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Unified Diff: cc/surfaces/surface_manager.cc

Issue 2676373004: Implement service-side surface synchronization (Closed)
Patch Set: DisplayCompositorLockManager => SurfaceDependencyTracker. Added More Comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698