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/browser/android/synchronous_compositor_host.h" | 5 #include "content/browser/android/synchronous_compositor_host.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/containers/hash_tables.h" | 9 #include "base/containers/hash_tables.h" |
10 #include "base/memory/shared_memory.h" | 10 #include "base/memory/shared_memory.h" |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); | 128 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); |
129 }; | 129 }; |
130 | 130 |
131 } | 131 } |
132 | 132 |
133 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { | 133 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { |
134 SyncCompositorCommonBrowserParams common_browser_params; | 134 SyncCompositorCommonBrowserParams common_browser_params; |
135 PopulateCommonParams(&common_browser_params); | 135 PopulateCommonParams(&common_browser_params); |
136 SyncCompositorCommonRendererParams common_renderer_params; | 136 SyncCompositorCommonRendererParams common_renderer_params; |
137 bool success = false; | 137 bool success = false; |
138 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 138 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
139 ScopedSetSkCanvas set_sk_canvas(canvas); | 139 ScopedSetSkCanvas set_sk_canvas(canvas); |
140 SyncCompositorDemandDrawSwParams params; // Unused. | 140 SyncCompositorDemandDrawSwParams params; // Unused. |
141 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 141 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
142 routing_id_, common_browser_params, params, &success, | 142 routing_id_, common_browser_params, params, &success, |
143 &common_renderer_params, frame.get()))) { | 143 &common_renderer_params, frame.get()))) { |
144 return false; | 144 return false; |
145 } | 145 } |
146 if (!success) | 146 if (!success) |
147 return false; | 147 return false; |
148 ProcessCommonParams(common_renderer_params); | 148 ProcessCommonParams(common_renderer_params); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); | 192 DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); |
193 size_t stride = info.minRowBytes(); | 193 size_t stride = info.minRowBytes(); |
194 size_t buffer_size = info.getSafeSize(stride); | 194 size_t buffer_size = info.getSafeSize(stride); |
195 if (!buffer_size) | 195 if (!buffer_size) |
196 return false; // Overflow. | 196 return false; // Overflow. |
197 | 197 |
198 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); | 198 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); |
199 if (!software_draw_shm_) | 199 if (!software_draw_shm_) |
200 return false; | 200 return false; |
201 | 201 |
202 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 202 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
203 SyncCompositorCommonBrowserParams common_browser_params; | 203 SyncCompositorCommonBrowserParams common_browser_params; |
204 PopulateCommonParams(&common_browser_params); | 204 PopulateCommonParams(&common_browser_params); |
205 SyncCompositorCommonRendererParams common_renderer_params; | 205 SyncCompositorCommonRendererParams common_renderer_params; |
206 bool success = false; | 206 bool success = false; |
207 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 207 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
208 routing_id_, common_browser_params, params, &success, | 208 routing_id_, common_browser_params, params, &success, |
209 &common_renderer_params, frame.get()))) { | 209 &common_renderer_params, frame.get()))) { |
210 return false; | 210 return false; |
211 } | 211 } |
212 ScopedSendZeroMemory send_zero_memory(this); | 212 ScopedSendZeroMemory send_zero_memory(this); |
(...skipping 18 matching lines...) Expand all Loading... |
231 return true; | 231 return true; |
232 } | 232 } |
233 | 233 |
234 void SynchronousCompositorHost::SetSoftwareDrawSharedMemoryIfNeeded( | 234 void SynchronousCompositorHost::SetSoftwareDrawSharedMemoryIfNeeded( |
235 size_t stride, | 235 size_t stride, |
236 size_t buffer_size) { | 236 size_t buffer_size) { |
237 if (software_draw_shm_ && software_draw_shm_->stride == stride && | 237 if (software_draw_shm_ && software_draw_shm_->stride == stride && |
238 software_draw_shm_->buffer_size == buffer_size) | 238 software_draw_shm_->buffer_size == buffer_size) |
239 return; | 239 return; |
240 software_draw_shm_.reset(); | 240 software_draw_shm_.reset(); |
241 scoped_ptr<SharedMemoryWithSize> software_draw_shm( | 241 std::unique_ptr<SharedMemoryWithSize> software_draw_shm( |
242 new SharedMemoryWithSize(stride, buffer_size)); | 242 new SharedMemoryWithSize(stride, buffer_size)); |
243 { | 243 { |
244 TRACE_EVENT1("browser", "AllocateSharedMemory", "buffer_size", buffer_size); | 244 TRACE_EVENT1("browser", "AllocateSharedMemory", "buffer_size", buffer_size); |
245 if (!software_draw_shm->shm.CreateAndMapAnonymous(buffer_size)) | 245 if (!software_draw_shm->shm.CreateAndMapAnonymous(buffer_size)) |
246 return; | 246 return; |
247 } | 247 } |
248 | 248 |
249 SyncCompositorSetSharedMemoryParams set_shm_params; | 249 SyncCompositorSetSharedMemoryParams set_shm_params; |
250 set_shm_params.buffer_size = buffer_size; | 250 set_shm_params.buffer_size = buffer_size; |
251 base::ProcessHandle renderer_process_handle = | 251 base::ProcessHandle renderer_process_handle = |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 params.scrollable_size, params.page_scale_factor, | 463 params.scrollable_size, params.page_scale_factor, |
464 params.min_page_scale_factor, params.max_page_scale_factor); | 464 params.min_page_scale_factor, params.max_page_scale_factor); |
465 } | 465 } |
466 } | 466 } |
467 | 467 |
468 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { | 468 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { |
469 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); | 469 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); |
470 } | 470 } |
471 | 471 |
472 } // namespace content | 472 } // namespace content |
OLD | NEW |