Chromium Code Reviews| 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/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 99 const gfx::Size& surface_size, | 99 const gfx::Size& surface_size, |
| 100 const gfx::Transform& transform, | 100 const gfx::Transform& transform, |
| 101 const gfx::Rect& viewport, | 101 const gfx::Rect& viewport, |
| 102 const gfx::Rect& clip, | 102 const gfx::Rect& clip, |
| 103 const gfx::Rect& viewport_rect_for_tile_priority, | 103 const gfx::Rect& viewport_rect_for_tile_priority, |
| 104 const gfx::Transform& transform_for_tile_priority) { | 104 const gfx::Transform& transform_for_tile_priority) { |
| 105 SyncCompositorDemandDrawHwParams params(surface_size, transform, viewport, | 105 SyncCompositorDemandDrawHwParams params(surface_size, transform, viewport, |
| 106 clip, viewport_rect_for_tile_priority, | 106 clip, viewport_rect_for_tile_priority, |
| 107 transform_for_tile_priority); | 107 transform_for_tile_priority); |
| 108 SynchronousCompositor::Frame frame; | 108 SynchronousCompositor::Frame frame; |
| 109 frame.frame.reset(new cc::CompositorFrame); | 109 frame.frame = cc::CompositorFrame::Create(); |
| 110 SyncCompositorCommonRendererParams common_renderer_params; | 110 SyncCompositorCommonRendererParams common_renderer_params; |
| 111 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( | 111 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( |
| 112 routing_id_, params, &common_renderer_params, | 112 routing_id_, params, &common_renderer_params, |
| 113 &frame.output_surface_id, frame.frame.get()))) { | 113 &frame.output_surface_id, &frame.frame))) { |
| 114 return SynchronousCompositor::Frame(); | 114 return SynchronousCompositor::Frame(); |
| 115 } | 115 } |
| 116 ProcessCommonParams(common_renderer_params); | 116 ProcessCommonParams(common_renderer_params); |
| 117 if (!frame.frame->delegated_frame_data) { | 117 if (!frame.frame->delegated_frame_data) { |
| 118 // This can happen if compositor did not swap in this draw. | 118 // This can happen if compositor did not swap in this draw. |
| 119 frame.frame.reset(); | 119 frame.frame.reset(); |
| 120 } | 120 } |
| 121 if (frame.frame) { | 121 if (frame.frame) { |
| 122 UpdateFrameMetaData(frame.frame->metadata); | 122 UpdateFrameMetaData(frame.frame->metadata); |
| 123 } | 123 } |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 143 | 143 |
| 144 private: | 144 private: |
| 145 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); | 145 DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); |
| 146 }; | 146 }; |
| 147 | 147 |
| 148 } | 148 } |
| 149 | 149 |
| 150 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { | 150 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { |
| 151 SyncCompositorCommonRendererParams common_renderer_params; | 151 SyncCompositorCommonRendererParams common_renderer_params; |
| 152 bool success = false; | 152 bool success = false; |
| 153 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 153 std::unique_ptr<cc::CompositorFrame> frame(cc::CompositorFrame::Create()); |
|
danakj
2016/06/23 20:34:41
just allocate this on the stack, since ownership n
| |
| 154 ScopedSetSkCanvas set_sk_canvas(canvas); | 154 ScopedSetSkCanvas set_sk_canvas(canvas); |
| 155 SyncCompositorDemandDrawSwParams params; // Unused. | 155 SyncCompositorDemandDrawSwParams params; // Unused. |
| 156 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 156 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
| 157 routing_id_, params, &success, &common_renderer_params, | 157 routing_id_, params, &success, &common_renderer_params, &frame))) { |
| 158 frame.get()))) { | |
| 159 return false; | 158 return false; |
| 160 } | 159 } |
| 161 if (!success) | 160 if (!success) |
| 162 return false; | 161 return false; |
| 163 ProcessCommonParams(common_renderer_params); | 162 ProcessCommonParams(common_renderer_params); |
| 164 UpdateFrameMetaData(frame->metadata); | 163 UpdateFrameMetaData(frame->metadata); |
| 165 return true; | 164 return true; |
| 166 } | 165 } |
| 167 | 166 |
| 168 class SynchronousCompositorHost::ScopedSendZeroMemory { | 167 class SynchronousCompositorHost::ScopedSendZeroMemory { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 207 DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); | 206 DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); |
| 208 size_t stride = info.minRowBytes(); | 207 size_t stride = info.minRowBytes(); |
| 209 size_t buffer_size = info.getSafeSize(stride); | 208 size_t buffer_size = info.getSafeSize(stride); |
| 210 if (!buffer_size) | 209 if (!buffer_size) |
| 211 return false; // Overflow. | 210 return false; // Overflow. |
| 212 | 211 |
| 213 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); | 212 SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); |
| 214 if (!software_draw_shm_) | 213 if (!software_draw_shm_) |
| 215 return false; | 214 return false; |
| 216 | 215 |
| 217 std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 216 std::unique_ptr<cc::CompositorFrame> frame(cc::CompositorFrame::Create()); |
|
danakj
2016/06/23 20:34:41
ditto
| |
| 218 SyncCompositorCommonRendererParams common_renderer_params; | 217 SyncCompositorCommonRendererParams common_renderer_params; |
| 219 bool success = false; | 218 bool success = false; |
| 220 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 219 if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |
| 221 routing_id_, params, &success, &common_renderer_params, | 220 routing_id_, params, &success, &common_renderer_params, &frame))) { |
| 222 frame.get()))) { | |
| 223 return false; | 221 return false; |
| 224 } | 222 } |
| 225 ScopedSendZeroMemory send_zero_memory(this); | 223 ScopedSendZeroMemory send_zero_memory(this); |
| 226 if (!success) | 224 if (!success) |
| 227 return false; | 225 return false; |
| 228 | 226 |
| 229 ProcessCommonParams(common_renderer_params); | 227 ProcessCommonParams(common_renderer_params); |
| 230 UpdateFrameMetaData(frame->metadata); | 228 UpdateFrameMetaData(frame->metadata); |
| 231 | 229 |
| 232 SkBitmap bitmap; | 230 SkBitmap bitmap; |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 if (params.page_scale_factor) { | 381 if (params.page_scale_factor) { |
| 384 client_->UpdateRootLayerState( | 382 client_->UpdateRootLayerState( |
| 385 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), | 383 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), |
| 386 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), | 384 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), |
| 387 params.scrollable_size, params.page_scale_factor, | 385 params.scrollable_size, params.page_scale_factor, |
| 388 params.min_page_scale_factor, params.max_page_scale_factor); | 386 params.min_page_scale_factor, params.max_page_scale_factor); |
| 389 } | 387 } |
| 390 } | 388 } |
| 391 | 389 |
| 392 } // namespace content | 390 } // namespace content |
| OLD | NEW |