Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: content/renderer/gpu/renderer_compositor_frame_sink.cc

Issue 2789773003: Send FrameSwapMessageQueue's messages with a separate IPC (Closed)
Patch Set: rebased Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 39d110095b06863794d33c8741f0854a801c16eb..007372bdc031d5554b91410ee2261de81bec3c7a 100644
--- a/content/renderer/gpu/renderer_compositor_frame_sink.cc
+++ b/content/renderer/gpu/renderer_compositor_frame_sink.cc
@@ -49,7 +49,8 @@ RendererCompositorFrameSink::RendererCompositorFrameSink(
synthetic_begin_frame_source_
? nullptr
: base::MakeUnique<cc::ExternalBeginFrameSource>(this)),
- routing_id_(routing_id) {
+ routing_id_(routing_id),
+ last_used_frame_token_(compositor_frame_sink_id << 28) {
Fady Samuel 2017/03/31 16:45:14 I'd rather FrameToken be a struct with two ints li
Saman Sami 2017/04/03 19:22:28 What should those two ints be called? Frame token
DCHECK(compositor_frame_sink_filter_);
DCHECK(frame_swap_message_queue_);
DCHECK(message_sender_);
@@ -73,7 +74,8 @@ RendererCompositorFrameSink::RendererCompositorFrameSink(
synthetic_begin_frame_source_
? nullptr
: base::MakeUnique<cc::ExternalBeginFrameSource>(this)),
- routing_id_(routing_id) {
+ routing_id_(routing_id),
+ last_used_frame_token_(compositor_frame_sink_id << 28) {
DCHECK(compositor_frame_sink_filter_);
DCHECK(frame_swap_message_queue_);
DCHECK(message_sender_);
@@ -130,18 +132,27 @@ void RendererCompositorFrameSink::SubmitCompositorFrame(
if (ShouldAllocateNewLocalSurfaceId(frame))
local_surface_id_ = id_allocator_.GenerateId();
UpdateFrameData(frame);
+
{
std::unique_ptr<FrameSwapMessageQueue::SendMessageScope>
send_message_scope =
frame_swap_message_queue_->AcquireSendMessageScope();
std::vector<std::unique_ptr<IPC::Message>> messages;
- std::vector<IPC::Message> messages_to_deliver_with_frame;
frame_swap_message_queue_->DrainMessages(&messages);
- FrameSwapMessageQueue::TransferMessages(&messages,
- &messages_to_deliver_with_frame);
- Send(new ViewHostMsg_SwapCompositorFrame(
- routing_id_, compositor_frame_sink_id_, local_surface_id_, frame,
- messages_to_deliver_with_frame));
+ std::vector<IPC::Message> messages_to_send;
+ std::vector<IPC::Message> dummy;
+ FrameSwapMessageQueue::TransferMessages(&messages, &messages_to_send);
+ uint32_t frame_token = 0;
+ if (!messages_to_send.empty())
+ frame_token = ++last_used_frame_token_;
+ frame.metadata.frame_token = frame_token;
+ Send(new ViewHostMsg_SwapCompositorFrame(routing_id_,
+ compositor_frame_sink_id_,
+ local_surface_id_, frame, dummy));
+ if (frame_token) {
+ Send(new ViewHostMsg_FrameSwapMessages(routing_id_, frame_token,
+ messages_to_send));
+ }
// ~send_message_scope.
}
}
« content/common/view_messages.h ('K') | « content/renderer/gpu/renderer_compositor_frame_sink.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698