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

Side by Side Diff: content/renderer/gpu/queue_message_swap_promise.cc

Issue 2921713002: Reland "Send FrameSwapMessageQueue's messages in QueueMessageSwapPromise" with fixes (Closed)
Patch Set: Don't pass to RCFS Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/gpu/queue_message_swap_promise.h" 5 #include "content/renderer/gpu/queue_message_swap_promise.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "content/common/view_messages.h"
8 #include "content/public/common/content_switches.h" 9 #include "content/public/common/content_switches.h"
9 #include "content/public/renderer/render_thread.h" 10 #include "content/public/renderer/render_thread.h"
10 #include "content/renderer/gpu/frame_swap_message_queue.h" 11 #include "content/renderer/gpu/frame_swap_message_queue.h"
11 #include "ipc/ipc_sync_message_filter.h" 12 #include "ipc/ipc_sync_message_filter.h"
12 13
13 namespace content { 14 namespace content {
14 15
15 QueueMessageSwapPromise::QueueMessageSwapPromise( 16 QueueMessageSwapPromise::QueueMessageSwapPromise(
16 scoped_refptr<IPC::SyncMessageFilter> message_sender, 17 scoped_refptr<IPC::SyncMessageFilter> message_sender,
17 scoped_refptr<content::FrameSwapMessageQueue> message_queue, 18 scoped_refptr<content::FrameSwapMessageQueue> message_queue,
(...skipping 23 matching lines...) Expand all
41 #endif 42 #endif
42 message_queue_->DidActivate(source_frame_number_); 43 message_queue_->DidActivate(source_frame_number_);
43 // The OutputSurface will take care of the Drain+Send. 44 // The OutputSurface will take care of the Drain+Send.
44 } 45 }
45 46
46 void QueueMessageSwapPromise::WillSwap(cc::CompositorFrameMetadata* metadata) { 47 void QueueMessageSwapPromise::WillSwap(cc::CompositorFrameMetadata* metadata) {
47 #if DCHECK_IS_ON() 48 #if DCHECK_IS_ON()
48 DCHECK(!completed_); 49 DCHECK(!completed_);
49 #endif 50 #endif
50 message_queue_->DidSwap(source_frame_number_); 51 message_queue_->DidSwap(source_frame_number_);
51 // The OutputSurface will take care of the Drain+Send. 52
53 if (!message_queue_->AreFramesDiscarded()) {
54 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope>
55 send_message_scope = message_queue_->AcquireSendMessageScope();
56 std::vector<std::unique_ptr<IPC::Message>> messages;
57 message_queue_->DrainMessages(&messages);
58 std::vector<IPC::Message> messages_to_send;
59 FrameSwapMessageQueue::TransferMessages(&messages, &messages_to_send);
60 if (!messages_to_send.empty()) {
61 metadata->frame_token = message_queue_->AllocateFrameToken();
62 message_sender_->Send(new ViewHostMsg_FrameSwapMessages(
63 message_queue_->routing_id(), metadata->frame_token,
64 messages_to_send));
65 }
66 }
67
52 PromiseCompleted(); 68 PromiseCompleted();
53 } 69 }
54 70
55 void QueueMessageSwapPromise::DidSwap() {} 71 void QueueMessageSwapPromise::DidSwap() {}
56 72
57 cc::SwapPromise::DidNotSwapAction QueueMessageSwapPromise::DidNotSwap( 73 cc::SwapPromise::DidNotSwapAction QueueMessageSwapPromise::DidNotSwap(
58 DidNotSwapReason reason) { 74 DidNotSwapReason reason) {
59 #if DCHECK_IS_ON() 75 #if DCHECK_IS_ON()
60 DCHECK(!completed_); 76 DCHECK(!completed_);
61 #endif 77 #endif
(...skipping 12 matching lines...) Expand all
74 #if DCHECK_IS_ON() 90 #if DCHECK_IS_ON()
75 completed_ = true; 91 completed_ = true;
76 #endif 92 #endif
77 } 93 }
78 94
79 int64_t QueueMessageSwapPromise::TraceId() const { 95 int64_t QueueMessageSwapPromise::TraceId() const {
80 return 0; 96 return 0;
81 } 97 }
82 98
83 } // namespace content 99 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/gpu/frame_swap_message_queue_unittest.cc ('k') | content/renderer/gpu/queue_message_swap_promise_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698