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

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

Issue 2669213004: Removed cc::CompositorFrameSink::client_thread_checker_ (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « content/renderer/gpu/renderer_compositor_frame_sink.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer_compositor_frame_sink.h" 5 #include "content/renderer/gpu/renderer_compositor_frame_sink.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 compositor_frame_sink_filter_( 43 compositor_frame_sink_filter_(
44 RenderThreadImpl::current()->compositor_message_filter()), 44 RenderThreadImpl::current()->compositor_message_filter()),
45 message_sender_(RenderThreadImpl::current()->sync_message_filter()), 45 message_sender_(RenderThreadImpl::current()->sync_message_filter()),
46 frame_swap_message_queue_(swap_frame_message_queue), 46 frame_swap_message_queue_(swap_frame_message_queue),
47 begin_frame_source_(std::move(begin_frame_source)), 47 begin_frame_source_(std::move(begin_frame_source)),
48 routing_id_(routing_id) { 48 routing_id_(routing_id) {
49 DCHECK(compositor_frame_sink_filter_); 49 DCHECK(compositor_frame_sink_filter_);
50 DCHECK(frame_swap_message_queue_); 50 DCHECK(frame_swap_message_queue_);
51 DCHECK(message_sender_); 51 DCHECK(message_sender_);
52 DCHECK(begin_frame_source_); 52 DCHECK(begin_frame_source_);
53 thread_checker_.DetachFromThread();
53 } 54 }
54 55
55 RendererCompositorFrameSink::RendererCompositorFrameSink( 56 RendererCompositorFrameSink::RendererCompositorFrameSink(
56 int32_t routing_id, 57 int32_t routing_id,
57 uint32_t compositor_frame_sink_id, 58 uint32_t compositor_frame_sink_id,
58 std::unique_ptr<cc::BeginFrameSource> begin_frame_source, 59 std::unique_ptr<cc::BeginFrameSource> begin_frame_source,
59 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider, 60 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider,
60 scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue) 61 scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue)
61 : CompositorFrameSink(std::move(vulkan_context_provider)), 62 : CompositorFrameSink(std::move(vulkan_context_provider)),
62 compositor_frame_sink_id_(compositor_frame_sink_id), 63 compositor_frame_sink_id_(compositor_frame_sink_id),
63 compositor_frame_sink_filter_( 64 compositor_frame_sink_filter_(
64 RenderThreadImpl::current()->compositor_message_filter()), 65 RenderThreadImpl::current()->compositor_message_filter()),
65 message_sender_(RenderThreadImpl::current()->sync_message_filter()), 66 message_sender_(RenderThreadImpl::current()->sync_message_filter()),
66 frame_swap_message_queue_(swap_frame_message_queue), 67 frame_swap_message_queue_(swap_frame_message_queue),
67 begin_frame_source_(std::move(begin_frame_source)), 68 begin_frame_source_(std::move(begin_frame_source)),
68 routing_id_(routing_id) { 69 routing_id_(routing_id) {
69 DCHECK(compositor_frame_sink_filter_); 70 DCHECK(compositor_frame_sink_filter_);
70 DCHECK(frame_swap_message_queue_); 71 DCHECK(frame_swap_message_queue_);
71 DCHECK(message_sender_); 72 DCHECK(message_sender_);
72 DCHECK(begin_frame_source_); 73 DCHECK(begin_frame_source_);
74 thread_checker_.DetachFromThread();
73 } 75 }
74 76
75 RendererCompositorFrameSink::~RendererCompositorFrameSink() = default; 77 RendererCompositorFrameSink::~RendererCompositorFrameSink() = default;
76 78
77 bool RendererCompositorFrameSink::BindToClient( 79 bool RendererCompositorFrameSink::BindToClient(
78 cc::CompositorFrameSinkClient* client) { 80 cc::CompositorFrameSinkClient* client) {
81 DCHECK(thread_checker_.CalledOnValidThread());
79 if (!cc::CompositorFrameSink::BindToClient(client)) 82 if (!cc::CompositorFrameSink::BindToClient(client))
80 return false; 83 return false;
81 84
82 DCHECK(begin_frame_source_); 85 DCHECK(begin_frame_source_);
83 client_->SetBeginFrameSource(begin_frame_source_.get()); 86 client_->SetBeginFrameSource(begin_frame_source_.get());
84 87
85 compositor_frame_sink_proxy_ = new RendererCompositorFrameSinkProxy(this); 88 compositor_frame_sink_proxy_ = new RendererCompositorFrameSinkProxy(this);
86 compositor_frame_sink_filter_handler_ = 89 compositor_frame_sink_filter_handler_ =
87 base::Bind(&RendererCompositorFrameSinkProxy::OnMessageReceived, 90 base::Bind(&RendererCompositorFrameSinkProxy::OnMessageReceived,
88 compositor_frame_sink_proxy_); 91 compositor_frame_sink_proxy_);
89 compositor_frame_sink_filter_->AddHandlerOnCompositorThread( 92 compositor_frame_sink_filter_->AddHandlerOnCompositorThread(
90 routing_id_, compositor_frame_sink_filter_handler_); 93 routing_id_, compositor_frame_sink_filter_handler_);
91 return true; 94 return true;
92 } 95 }
93 96
94 void RendererCompositorFrameSink::DetachFromClient() { 97 void RendererCompositorFrameSink::DetachFromClient() {
98 DCHECK(thread_checker_.CalledOnValidThread());
95 client_->SetBeginFrameSource(nullptr); 99 client_->SetBeginFrameSource(nullptr);
96 // Destroy the begin frame source on the same thread it was bound on. 100 // Destroy the begin frame source on the same thread it was bound on.
97 // The CompositorFrameSink itself is destroyed on the main thread. 101 // The CompositorFrameSink itself is destroyed on the main thread.
98 begin_frame_source_ = nullptr; 102 begin_frame_source_ = nullptr;
99 compositor_frame_sink_proxy_->ClearCompositorFrameSink(); 103 compositor_frame_sink_proxy_->ClearCompositorFrameSink();
100 compositor_frame_sink_filter_->RemoveHandlerOnCompositorThread( 104 compositor_frame_sink_filter_->RemoveHandlerOnCompositorThread(
101 routing_id_, compositor_frame_sink_filter_handler_); 105 routing_id_, compositor_frame_sink_filter_handler_);
102 106
103 cc::CompositorFrameSink::DetachFromClient(); 107 cc::CompositorFrameSink::DetachFromClient();
104 } 108 }
(...skipping 11 matching lines...) Expand all
116 &messages_to_deliver_with_frame); 120 &messages_to_deliver_with_frame);
117 Send(new ViewHostMsg_SwapCompositorFrame(routing_id_, 121 Send(new ViewHostMsg_SwapCompositorFrame(routing_id_,
118 compositor_frame_sink_id_, frame, 122 compositor_frame_sink_id_, frame,
119 messages_to_deliver_with_frame)); 123 messages_to_deliver_with_frame));
120 // ~send_message_scope. 124 // ~send_message_scope.
121 } 125 }
122 } 126 }
123 127
124 void RendererCompositorFrameSink::OnMessageReceived( 128 void RendererCompositorFrameSink::OnMessageReceived(
125 const IPC::Message& message) { 129 const IPC::Message& message) {
126 DCHECK(client_thread_checker_.CalledOnValidThread()); 130 DCHECK(thread_checker_.CalledOnValidThread());
127 IPC_BEGIN_MESSAGE_MAP(RendererCompositorFrameSink, message) 131 IPC_BEGIN_MESSAGE_MAP(RendererCompositorFrameSink, message)
128 IPC_MESSAGE_HANDLER(ViewMsg_ReclaimCompositorResources, 132 IPC_MESSAGE_HANDLER(ViewMsg_ReclaimCompositorResources,
129 OnReclaimCompositorResources); 133 OnReclaimCompositorResources);
130 IPC_END_MESSAGE_MAP() 134 IPC_END_MESSAGE_MAP()
131 } 135 }
132 136
133 void RendererCompositorFrameSink::OnReclaimCompositorResources( 137 void RendererCompositorFrameSink::OnReclaimCompositorResources(
134 uint32_t compositor_frame_sink_id, 138 uint32_t compositor_frame_sink_id,
135 bool is_swap_ack, 139 bool is_swap_ack,
136 const cc::ReturnedResourceArray& resources) { 140 const cc::ReturnedResourceArray& resources) {
137 // Ignore message if it's a stale one coming from a different output surface 141 // Ignore message if it's a stale one coming from a different output surface
138 // (e.g. after a lost context). 142 // (e.g. after a lost context).
139 if (compositor_frame_sink_id != compositor_frame_sink_id_) 143 if (compositor_frame_sink_id != compositor_frame_sink_id_)
140 return; 144 return;
141 client_->ReclaimResources(resources); 145 client_->ReclaimResources(resources);
142 if (is_swap_ack) 146 if (is_swap_ack)
143 client_->DidReceiveCompositorFrameAck(); 147 client_->DidReceiveCompositorFrameAck();
144 } 148 }
145 149
146 bool RendererCompositorFrameSink::Send(IPC::Message* message) { 150 bool RendererCompositorFrameSink::Send(IPC::Message* message) {
147 return message_sender_->Send(message); 151 return message_sender_->Send(message);
148 } 152 }
149 153
150 } // namespace content 154 } // namespace content
OLDNEW
« no previous file with comments | « 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