Chromium Code Reviews| 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..620dcaf15e3cc55ab9ff81043b87af5b33e0a2e3 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,15 @@ 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>()); |
|
piman
2014/10/07 20:20:51
return? We don't want to run the callback twice, d
no sievers
2014/10/07 20:22:23
Doh! Done.
|
| + } |
| + swap_buffers_completion_callback_.Run(latency_info); |
| + } |
| +} |
| + |
| } // namespace content |