Index: content/renderer/gpu/renderer_compositor_frame_sink.cc |
diff --git a/content/renderer/gpu/renderer_compositor_frame_sink.cc b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
index f7be1192269ac5b8b6a0907349fd781b5c732225..9e7dd13124f220c16f1bbf758a90b1a1cea93021 100644 |
--- a/content/renderer/gpu/renderer_compositor_frame_sink.cc |
+++ b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
@@ -140,7 +140,25 @@ |
current_surface_properties_ = new_surface_properties; |
} |
- sink_->SubmitCompositorFrame(local_surface_id_, std::move(frame)); |
+ { |
+ std::unique_ptr<FrameSwapMessageQueue::SendMessageScope> |
+ send_message_scope = |
+ frame_swap_message_queue_->AcquireSendMessageScope(); |
+ std::vector<std::unique_ptr<IPC::Message>> messages; |
+ frame_swap_message_queue_->DrainMessages(&messages); |
+ std::vector<IPC::Message> messages_to_send; |
+ FrameSwapMessageQueue::TransferMessages(&messages, &messages_to_send); |
+ uint32_t frame_token = 0; |
+ if (!messages_to_send.empty()) |
+ frame_token = frame_swap_message_queue_->AllocateFrameToken(); |
+ frame.metadata.frame_token = frame_token; |
+ sink_->SubmitCompositorFrame(local_surface_id_, std::move(frame)); |
+ if (frame_token) { |
+ message_sender_->Send(new ViewHostMsg_FrameSwapMessages( |
+ routing_id_, frame_token, messages_to_send)); |
+ } |
+ // ~send_message_scope. |
+ } |
} |
void RendererCompositorFrameSink::DidNotProduceFrame( |