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

Side by Side Diff: content/browser/android/synchronous_compositor_host.cc

Issue 2096493002: Make cc::CompositorFrames movable [Part 1 of 2] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix reflector Created 4 years, 5 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 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698