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

Unified Diff: cc/surfaces/display.cc

Issue 2339633003: Reland of cc: Remove frame queuing from the scheduler. (Closed)
Patch Set: expire missed frames in renderer only Created 4 years, 3 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/display.cc
diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
index 670ad22a70a54ab4de967666805e450b9cfbd168..00d88e09e214fcca5a40f03f74dc2c052835b9e0 100644
--- a/cc/surfaces/display.cc
+++ b/cc/surfaces/display.cc
@@ -248,7 +248,7 @@ bool Display::DrawAndSwap() {
// Run callbacks early to allow pipelining.
for (const auto& id_entry : aggregator_->previous_contained_surfaces()) {
Surface* surface = surface_manager_->GetSurfaceForId(id_entry.first);
- if (surface)
+ if (surface && surface->surface_id() != current_surface_id_)
surface->RunDrawCallbacks();
}
@@ -325,10 +325,11 @@ bool Display::DrawAndSwap() {
if (should_swap) {
swapped_since_resize_ = true;
for (auto& latency : frame.metadata.latency_info) {
- TRACE_EVENT_WITH_FLOW1("input,benchmark", "LatencyInfo.Flow",
+ TRACE_EVENT_WITH_FLOW1(
+ "input,benchmark", "LatencyInfo.Flow",
TRACE_ID_DONT_MANGLE(latency.trace_id()),
- TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT,
- "step", "Display::DrawAndSwap");
+ TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, "step",
+ "Display::DrawAndSwap");
}
benchmark_instrumentation::IssueDisplayRenderingStatsEvent();
renderer_->SwapBuffers(std::move(frame.metadata));
@@ -347,6 +348,12 @@ bool Display::DrawAndSwap() {
}
}
+ // Run draw callback for root surface after drawing.
enne (OOO) 2016/09/19 22:11:50 Can you make this comment more of a 'why' and less
sunnyps 2016/09/19 23:59:04 Added comment where we run the callbacks for other
+ Surface* root_surface =
+ surface_manager_->GetSurfaceForId(current_surface_id_);
+ if (root_surface)
+ root_surface->RunDrawCallbacks();
+
client_->DisplayDidDrawAndSwap();
return true;
}

Powered by Google App Engine
This is Rietveld 408576698