Index: content/common/gpu/client/command_buffer_proxy_impl.cc |
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.cc b/content/common/gpu/client/command_buffer_proxy_impl.cc |
index a0f67b3dedb55955c6cbb71f0bea71a06cc660b0..f25120c80d99422bbeb01073ae72e21efa3f7e02 100644 |
--- a/content/common/gpu/client/command_buffer_proxy_impl.cc |
+++ b/content/common/gpu/client/command_buffer_proxy_impl.cc |
@@ -47,6 +47,8 @@ bool CommandBufferProxyImpl::OnMessageReceived(const IPC::Message& message) { |
OnSetMemoryAllocation); |
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncPointAck, |
OnSignalSyncPointAck); |
+ IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SwapBuffersCompleted, |
+ OnSwapBuffersCompleted); |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -192,6 +194,11 @@ void CommandBufferProxyImpl::SetLatencyInfo( |
latency_info_.push_back(latency_info[i]); |
} |
+void CommandBufferProxyImpl::SetSwapBuffersCompletionCallback( |
+ const SwapBuffersCompletionCallback& callback) { |
+ swap_buffers_completion_callback_ = callback; |
+} |
+ |
void CommandBufferProxyImpl::WaitForTokenInRange(int32 start, int32 end) { |
TRACE_EVENT2("gpu", |
"CommandBufferProxyImpl::WaitForToken", |
@@ -504,4 +511,16 @@ gpu::CommandBufferSharedState* CommandBufferProxyImpl::shared_state() const { |
shared_state_shm_->memory()); |
} |
+void CommandBufferProxyImpl::OnSwapBuffersCompleted( |
+ const std::vector<ui::LatencyInfo>& latency_info) { |
+ if (!swap_buffers_completion_callback_.is_null()) { |
+ if (!ui::LatencyInfo::Verify( |
+ latency_info, "CommandBufferProxyImpl::OnSwapBuffersCompleted")) { |
+ swap_buffers_completion_callback_.Run(std::vector<ui::LatencyInfo>()); |
+ return; |
+ } |
+ swap_buffers_completion_callback_.Run(latency_info); |
+ } |
+} |
+ |
} // namespace content |