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

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

Issue 2899073006: Send FrameSwapMessageQueue's messages in QueueMessageSwapPromise (Closed)
Patch Set: Fixed memory leak Created 3 years, 7 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 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope>
54 send_message_scope = message_queue_->AcquireSendMessageScope();
55 std::vector<std::unique_ptr<IPC::Message>> messages;
56 message_queue_->DrainMessages(&messages);
57 std::vector<IPC::Message> messages_to_send;
58 FrameSwapMessageQueue::TransferMessages(&messages, &messages_to_send);
59 if (!messages_to_send.empty()) {
60 metadata->frame_token = message_queue_->AllocateFrameToken();
61 message_sender_->Send(new ViewHostMsg_FrameSwapMessages(
62 message_queue_->routing_id(), metadata->frame_token,
63 messages_to_send));
64 }
65 // ~send_message_scope.
66 }
52 PromiseCompleted(); 67 PromiseCompleted();
53 } 68 }
54 69
55 void QueueMessageSwapPromise::DidSwap() {} 70 void QueueMessageSwapPromise::DidSwap() {}
56 71
57 cc::SwapPromise::DidNotSwapAction QueueMessageSwapPromise::DidNotSwap( 72 cc::SwapPromise::DidNotSwapAction QueueMessageSwapPromise::DidNotSwap(
58 DidNotSwapReason reason) { 73 DidNotSwapReason reason) {
59 #if DCHECK_IS_ON() 74 #if DCHECK_IS_ON()
60 DCHECK(!completed_); 75 DCHECK(!completed_);
61 #endif 76 #endif
(...skipping 12 matching lines...) Expand all
74 #if DCHECK_IS_ON() 89 #if DCHECK_IS_ON()
75 completed_ = true; 90 completed_ = true;
76 #endif 91 #endif
77 } 92 }
78 93
79 int64_t QueueMessageSwapPromise::TraceId() const { 94 int64_t QueueMessageSwapPromise::TraceId() const {
80 return 0; 95 return 0;
81 } 96 }
82 97
83 } // namespace content 98 } // 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