Index: cc/surfaces/surface.cc |
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc |
index 0e08ec4f5461c849b14bd8585c6a56476868900c..8f08d63d9275e9d77d6c1e0fa912b98524272237 100644 |
--- a/cc/surfaces/surface.cc |
+++ b/cc/surfaces/surface.cc |
@@ -33,6 +33,7 @@ Surface::~Surface() { |
void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame, |
const base::Closure& callback) { |
+ TakeLatencyInfo(&frame->metadata.latency_info); |
scoped_ptr<CompositorFrame> previous_frame = current_frame_.Pass(); |
current_frame_ = frame.Pass(); |
factory_->ReceiveFromChild( |
@@ -60,6 +61,19 @@ const CompositorFrame* Surface::GetEligibleFrame() { |
return current_frame_.get(); |
} |
+void Surface::TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info) { |
+ if (!current_frame_) |
+ return; |
+ if (latency_info->empty()) { |
+ current_frame_->metadata.latency_info.swap(*latency_info); |
+ return; |
+ } |
+ std::copy(current_frame_->metadata.latency_info.begin(), |
+ current_frame_->metadata.latency_info.end(), |
+ std::back_inserter(*latency_info)); |
+ current_frame_->metadata.latency_info.clear(); |
+} |
+ |
void Surface::RunDrawCallbacks() { |
if (!draw_callback_.is_null()) { |
base::Closure callback = draw_callback_; |