Index: cc/trees/latency_info_swap_promise_monitor.cc |
diff --git a/cc/trees/latency_info_swap_promise_monitor.cc b/cc/trees/latency_info_swap_promise_monitor.cc |
index 6e9c57e04231de38b459c04c7705fff827aa335f..a57ae4c8c41c71f42b6c27b8148129d44b2eceba 100644 |
--- a/cc/trees/latency_info_swap_promise_monitor.cc |
+++ b/cc/trees/latency_info_swap_promise_monitor.cc |
@@ -59,7 +59,12 @@ void LatencyInfoSwapPromiseMonitor::OnSetNeedsCommitOnMain() { |
void LatencyInfoSwapPromiseMonitor::OnSetNeedsRedrawOnImpl() { |
if (AddRenderingScheduledComponent(latency_, false /* on_main */)) { |
scoped_ptr<SwapPromise> swap_promise(new LatencyInfoSwapPromise(*latency_)); |
- layer_tree_host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); |
+ // Queue a pinned swap promise on the active tree. This will allow |
+ // measurement of the time to the next SwapBuffers(). The swap |
+ // promise is pinned so that it is not interrupted by new incoming |
+ // activations (which would otherwise break the swap promise). |
+ layer_tree_host_impl_->active_tree()->QueuePinnedSwapPromise( |
+ swap_promise.Pass()); |
} |
} |