| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/android/synchronous_compositor_filter.h" | 5 #include "content/renderer/android/synchronous_compositor_filter.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 DLOG(WARNING) << "Failed to send message"; | 124 DLOG(WARNING) << "Failed to send message"; |
| 125 } | 125 } |
| 126 | 126 |
| 127 void SynchronousCompositorFilter::FilterReadyOnCompositorThread() { | 127 void SynchronousCompositorFilter::FilterReadyOnCompositorThread() { |
| 128 DCHECK(!filter_ready_); | 128 DCHECK(!filter_ready_); |
| 129 filter_ready_ = true; | 129 filter_ready_ = true; |
| 130 for (const auto& entry_pair : synchronous_input_handler_proxy_map_) { | 130 for (const auto& entry_pair : synchronous_input_handler_proxy_map_) { |
| 131 DCHECK(entry_pair.second); | 131 DCHECK(entry_pair.second); |
| 132 int routing_id = entry_pair.first; | 132 int routing_id = entry_pair.first; |
| 133 CreateSynchronousCompositorProxy(routing_id, entry_pair.second); | 133 CreateSynchronousCompositorProxy(routing_id, entry_pair.second); |
| 134 auto output_surface_entry = output_surface_map_.find(routing_id); | 134 auto compositor_frame_sink_entry = |
| 135 if (output_surface_entry != output_surface_map_.end()) { | 135 compositor_frame_sink_map_.find(routing_id); |
| 136 SetProxyOutputSurface(routing_id, output_surface_entry->second); | 136 if (compositor_frame_sink_entry != compositor_frame_sink_map_.end()) { |
| 137 SetProxyCompositorFrameSink(routing_id, |
| 138 compositor_frame_sink_entry->second); |
| 137 } | 139 } |
| 138 } | 140 } |
| 139 } | 141 } |
| 140 | 142 |
| 141 void SynchronousCompositorFilter::RegisterOutputSurface( | 143 void SynchronousCompositorFilter::RegisterCompositorFrameSink( |
| 142 int routing_id, | 144 int routing_id, |
| 143 SynchronousCompositorOutputSurface* output_surface) { | 145 SynchronousCompositorFrameSink* compositor_frame_sink) { |
| 144 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 146 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 145 DCHECK(output_surface); | 147 DCHECK(compositor_frame_sink); |
| 146 SynchronousCompositorProxy* proxy = FindProxy(routing_id); | 148 SynchronousCompositorProxy* proxy = FindProxy(routing_id); |
| 147 if (proxy) { | 149 if (proxy) { |
| 148 proxy->SetOutputSurface(output_surface); | 150 proxy->SetCompositorFrameSink(compositor_frame_sink); |
| 149 } else { | 151 } else { |
| 150 DCHECK(output_surface_map_.find(routing_id) == output_surface_map_.end()); | 152 DCHECK(compositor_frame_sink_map_.find(routing_id) == |
| 151 output_surface_map_[routing_id] = output_surface; | 153 compositor_frame_sink_map_.end()); |
| 154 compositor_frame_sink_map_[routing_id] = compositor_frame_sink; |
| 152 } | 155 } |
| 153 } | 156 } |
| 154 | 157 |
| 155 void SynchronousCompositorFilter::OnSynchronizeRendererState( | 158 void SynchronousCompositorFilter::OnSynchronizeRendererState( |
| 156 const std::vector<int>& routing_ids, | 159 const std::vector<int>& routing_ids, |
| 157 std::vector<SyncCompositorCommonRendererParams>* out) { | 160 std::vector<SyncCompositorCommonRendererParams>* out) { |
| 158 for (int routing_id : routing_ids) { | 161 for (int routing_id : routing_ids) { |
| 159 SynchronousCompositorProxy* proxy = FindProxy(routing_id); | 162 SynchronousCompositorProxy* proxy = FindProxy(routing_id); |
| 160 SyncCompositorCommonRendererParams param; | 163 SyncCompositorCommonRendererParams param; |
| 161 if (proxy) | 164 if (proxy) |
| 162 proxy->PopulateCommonParams(¶m); | 165 proxy->PopulateCommonParams(¶m); |
| 163 out->push_back(param); | 166 out->push_back(param); |
| 164 } | 167 } |
| 165 } | 168 } |
| 166 | 169 |
| 167 void SynchronousCompositorFilter::UnregisterOutputSurface( | 170 void SynchronousCompositorFilter::UnregisterCompositorFrameSink( |
| 168 int routing_id, | 171 int routing_id, |
| 169 SynchronousCompositorOutputSurface* output_surface) { | 172 SynchronousCompositorFrameSink* compositor_frame_sink) { |
| 170 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 173 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 171 DCHECK(output_surface); | 174 DCHECK(compositor_frame_sink); |
| 172 SynchronousCompositorProxy* proxy = FindProxy(routing_id); | 175 SynchronousCompositorProxy* proxy = FindProxy(routing_id); |
| 173 if (proxy) { | 176 if (proxy) { |
| 174 proxy->SetOutputSurface(nullptr); | 177 proxy->SetCompositorFrameSink(nullptr); |
| 175 } | 178 } |
| 176 auto entry = output_surface_map_.find(routing_id); | 179 auto entry = compositor_frame_sink_map_.find(routing_id); |
| 177 if (entry != output_surface_map_.end()) | 180 if (entry != compositor_frame_sink_map_.end()) |
| 178 output_surface_map_.erase(entry); | 181 compositor_frame_sink_map_.erase(entry); |
| 179 } | 182 } |
| 180 | 183 |
| 181 void SynchronousCompositorFilter::CreateSynchronousCompositorProxy( | 184 void SynchronousCompositorFilter::CreateSynchronousCompositorProxy( |
| 182 int routing_id, | 185 int routing_id, |
| 183 ui::SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { | 186 ui::SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { |
| 184 DCHECK(!sync_compositor_map_.contains(routing_id)); | 187 DCHECK(!sync_compositor_map_.contains(routing_id)); |
| 185 std::unique_ptr<SynchronousCompositorProxy> proxy( | 188 std::unique_ptr<SynchronousCompositorProxy> proxy( |
| 186 new SynchronousCompositorProxy(routing_id, this, | 189 new SynchronousCompositorProxy(routing_id, this, |
| 187 synchronous_input_handler_proxy)); | 190 synchronous_input_handler_proxy)); |
| 188 sync_compositor_map_.add(routing_id, std::move(proxy)); | 191 sync_compositor_map_.add(routing_id, std::move(proxy)); |
| 189 } | 192 } |
| 190 | 193 |
| 191 void SynchronousCompositorFilter::SetProxyOutputSurface( | 194 void SynchronousCompositorFilter::SetProxyCompositorFrameSink( |
| 192 int routing_id, | 195 int routing_id, |
| 193 SynchronousCompositorOutputSurface* output_surface) { | 196 SynchronousCompositorFrameSink* compositor_frame_sink) { |
| 194 DCHECK(output_surface); | 197 DCHECK(compositor_frame_sink); |
| 195 SynchronousCompositorProxy* proxy = FindProxy(routing_id); | 198 SynchronousCompositorProxy* proxy = FindProxy(routing_id); |
| 196 DCHECK(proxy); | 199 DCHECK(proxy); |
| 197 proxy->SetOutputSurface(output_surface); | 200 proxy->SetCompositorFrameSink(compositor_frame_sink); |
| 198 } | 201 } |
| 199 | 202 |
| 200 void SynchronousCompositorFilter::DidAddSynchronousHandlerProxy( | 203 void SynchronousCompositorFilter::DidAddSynchronousHandlerProxy( |
| 201 int routing_id, | 204 int routing_id, |
| 202 ui::SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { | 205 ui::SynchronousInputHandlerProxy* synchronous_input_handler_proxy) { |
| 203 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 206 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 204 DCHECK(synchronous_input_handler_proxy); | 207 DCHECK(synchronous_input_handler_proxy); |
| 205 if (filter_ready_) { | 208 if (filter_ready_) { |
| 206 CreateSynchronousCompositorProxy(routing_id, | 209 CreateSynchronousCompositorProxy(routing_id, |
| 207 synchronous_input_handler_proxy); | 210 synchronous_input_handler_proxy); |
| 208 auto entry = output_surface_map_.find(routing_id); | 211 auto entry = compositor_frame_sink_map_.find(routing_id); |
| 209 if (entry != output_surface_map_.end()) | 212 if (entry != compositor_frame_sink_map_.end()) |
| 210 SetProxyOutputSurface(routing_id, entry->second); | 213 SetProxyCompositorFrameSink(routing_id, entry->second); |
| 211 } else { | 214 } else { |
| 212 auto*& mapped_synchronous_input_handler_proxy = | 215 auto*& mapped_synchronous_input_handler_proxy = |
| 213 synchronous_input_handler_proxy_map_[routing_id]; | 216 synchronous_input_handler_proxy_map_[routing_id]; |
| 214 DCHECK(!mapped_synchronous_input_handler_proxy); | 217 DCHECK(!mapped_synchronous_input_handler_proxy); |
| 215 mapped_synchronous_input_handler_proxy = synchronous_input_handler_proxy; | 218 mapped_synchronous_input_handler_proxy = synchronous_input_handler_proxy; |
| 216 } | 219 } |
| 217 } | 220 } |
| 218 | 221 |
| 219 void SynchronousCompositorFilter::DidRemoveSynchronousHandlerProxy( | 222 void SynchronousCompositorFilter::DidRemoveSynchronousHandlerProxy( |
| 220 int routing_id) { | 223 int routing_id) { |
| 221 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 224 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 222 if (base::ContainsKey(sync_compositor_map_, routing_id)) { | 225 if (base::ContainsKey(sync_compositor_map_, routing_id)) { |
| 223 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 226 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 224 DCHECK(sync_compositor_map_.contains(routing_id)); | 227 DCHECK(sync_compositor_map_.contains(routing_id)); |
| 225 sync_compositor_map_.erase(routing_id); | 228 sync_compositor_map_.erase(routing_id); |
| 226 } | 229 } |
| 227 if (base::ContainsKey(synchronous_input_handler_proxy_map_, routing_id)) | 230 if (base::ContainsKey(synchronous_input_handler_proxy_map_, routing_id)) |
| 228 synchronous_input_handler_proxy_map_.erase(routing_id); | 231 synchronous_input_handler_proxy_map_.erase(routing_id); |
| 229 } | 232 } |
| 230 | 233 |
| 231 } // namespace content | 234 } // namespace content |
| OLD | NEW |