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

Side by Side Diff: content/renderer/android/synchronous_compositor_proxy.cc

Issue 2337913003: Fork cc::OutputSurface into cc::CompositorFrameSink. (Closed)
Patch Set: cfsfork: android-vulkan Created 4 years, 3 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/renderer/android/synchronous_compositor_proxy.h" 5 #include "content/renderer/android/synchronous_compositor_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/shared_memory.h" 9 #include "base/memory/shared_memory.h"
10 #include "cc/ipc/cc_param_traits.h" 10 #include "cc/ipc/cc_param_traits.h"
(...skipping 13 matching lines...) Expand all
24 SynchronousCompositorProxy::SynchronousCompositorProxy( 24 SynchronousCompositorProxy::SynchronousCompositorProxy(
25 int routing_id, 25 int routing_id,
26 IPC::Sender* sender, 26 IPC::Sender* sender,
27 ui::SynchronousInputHandlerProxy* input_handler_proxy) 27 ui::SynchronousInputHandlerProxy* input_handler_proxy)
28 : routing_id_(routing_id), 28 : routing_id_(routing_id),
29 sender_(sender), 29 sender_(sender),
30 input_handler_proxy_(input_handler_proxy), 30 input_handler_proxy_(input_handler_proxy),
31 use_in_process_zero_copy_software_draw_( 31 use_in_process_zero_copy_software_draw_(
32 base::CommandLine::ForCurrentProcess()->HasSwitch( 32 base::CommandLine::ForCurrentProcess()->HasSwitch(
33 switches::kSingleProcess)), 33 switches::kSingleProcess)),
34 output_surface_(nullptr), 34 compositor_frame_sink_(nullptr),
35 inside_receive_(false), 35 inside_receive_(false),
36 hardware_draw_reply_(nullptr), 36 hardware_draw_reply_(nullptr),
37 software_draw_reply_(nullptr), 37 software_draw_reply_(nullptr),
38 hardware_draw_reply_async_(false), 38 hardware_draw_reply_async_(false),
39 version_(0u), 39 version_(0u),
40 page_scale_factor_(0.f), 40 page_scale_factor_(0.f),
41 min_page_scale_factor_(0.f), 41 min_page_scale_factor_(0.f),
42 max_page_scale_factor_(0.f), 42 max_page_scale_factor_(0.f),
43 need_animate_scroll_(false), 43 need_animate_scroll_(false),
44 need_invalidate_count_(0u), 44 need_invalidate_count_(0u),
45 did_activate_pending_tree_count_(0u) { 45 did_activate_pending_tree_count_(0u) {
46 DCHECK(input_handler_proxy_); 46 DCHECK(input_handler_proxy_);
47 input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings(this); 47 input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings(this);
48 } 48 }
49 49
50 SynchronousCompositorProxy::~SynchronousCompositorProxy() { 50 SynchronousCompositorProxy::~SynchronousCompositorProxy() {
51 // The OutputSurface is destroyed/removed by the compositor before shutting 51 // The CompositorFrameSink is destroyed/removed by the compositor before
52 // down everything. 52 // shutting down everything.
53 DCHECK_EQ(output_surface_, nullptr); 53 DCHECK_EQ(compositor_frame_sink_, nullptr);
54 input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings(nullptr); 54 input_handler_proxy_->SetOnlySynchronouslyAnimateRootFlings(nullptr);
55 } 55 }
56 56
57 void SynchronousCompositorProxy::SetOutputSurface( 57 void SynchronousCompositorProxy::SetCompositorFrameSink(
58 SynchronousCompositorOutputSurface* output_surface) { 58 SynchronousCompositorFrameSink* compositor_frame_sink) {
59 DCHECK_NE(output_surface_, output_surface); 59 DCHECK_NE(compositor_frame_sink_, compositor_frame_sink);
60 if (output_surface_) { 60 if (compositor_frame_sink_) {
61 output_surface_->SetSyncClient(nullptr); 61 compositor_frame_sink_->SetSyncClient(nullptr);
62 } 62 }
63 output_surface_ = output_surface; 63 compositor_frame_sink_ = compositor_frame_sink;
64 if (output_surface_) { 64 if (compositor_frame_sink_) {
65 output_surface_->SetSyncClient(this); 65 compositor_frame_sink_->SetSyncClient(this);
66 } 66 }
67 } 67 }
68 68
69 void SynchronousCompositorProxy::SetNeedsSynchronousAnimateInput() { 69 void SynchronousCompositorProxy::SetNeedsSynchronousAnimateInput() {
70 need_animate_scroll_ = true; 70 need_animate_scroll_ = true;
71 Invalidate(); 71 Invalidate();
72 } 72 }
73 73
74 void SynchronousCompositorProxy::UpdateRootLayerState( 74 void SynchronousCompositorProxy::UpdateRootLayerState(
75 const gfx::ScrollOffset& total_scroll_offset, 75 const gfx::ScrollOffset& total_scroll_offset,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 params->page_scale_factor = page_scale_factor_; 122 params->page_scale_factor = page_scale_factor_;
123 params->min_page_scale_factor = min_page_scale_factor_; 123 params->min_page_scale_factor = min_page_scale_factor_;
124 params->max_page_scale_factor = max_page_scale_factor_; 124 params->max_page_scale_factor = max_page_scale_factor_;
125 params->need_animate_scroll = need_animate_scroll_; 125 params->need_animate_scroll = need_animate_scroll_;
126 params->need_invalidate_count = need_invalidate_count_; 126 params->need_invalidate_count = need_invalidate_count_;
127 params->did_activate_pending_tree_count = did_activate_pending_tree_count_; 127 params->did_activate_pending_tree_count = did_activate_pending_tree_count_;
128 } 128 }
129 129
130 void SynchronousCompositorProxy::OnMessageReceived( 130 void SynchronousCompositorProxy::OnMessageReceived(
131 const IPC::Message& message) { 131 const IPC::Message& message) {
132 if (output_surface_ && output_surface_->OnMessageReceived(message)) 132 if (compositor_frame_sink_ &&
133 compositor_frame_sink_->OnMessageReceived(message))
133 return; 134 return;
134 135
135 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorProxy, message) 136 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorProxy, message)
136 IPC_MESSAGE_HANDLER(SyncCompositorMsg_ComputeScroll, OnComputeScroll) 137 IPC_MESSAGE_HANDLER(SyncCompositorMsg_ComputeScroll, OnComputeScroll)
137 IPC_MESSAGE_HANDLER_DELAY_REPLY(SyncCompositorMsg_DemandDrawHw, 138 IPC_MESSAGE_HANDLER_DELAY_REPLY(SyncCompositorMsg_DemandDrawHw,
138 DemandDrawHw) 139 DemandDrawHw)
139 IPC_MESSAGE_HANDLER(SyncCompositorMsg_DemandDrawHwAsync, DemandDrawHwAsync) 140 IPC_MESSAGE_HANDLER(SyncCompositorMsg_DemandDrawHwAsync, DemandDrawHwAsync)
140 IPC_MESSAGE_HANDLER(SyncCompositorMsg_SetSharedMemory, SetSharedMemory) 141 IPC_MESSAGE_HANDLER(SyncCompositorMsg_SetSharedMemory, SetSharedMemory)
141 IPC_MESSAGE_HANDLER(SyncCompositorMsg_ZeroSharedMemory, ZeroSharedMemory) 142 IPC_MESSAGE_HANDLER(SyncCompositorMsg_ZeroSharedMemory, ZeroSharedMemory)
142 IPC_MESSAGE_HANDLER_DELAY_REPLY(SyncCompositorMsg_DemandDrawSw, 143 IPC_MESSAGE_HANDLER_DELAY_REPLY(SyncCompositorMsg_DemandDrawSw,
(...skipping 18 matching lines...) Expand all
161 DCHECK(reply_message); 162 DCHECK(reply_message);
162 DoDemandDrawHw(params, reply_message); 163 DoDemandDrawHw(params, reply_message);
163 } 164 }
164 165
165 void SynchronousCompositorProxy::DoDemandDrawHw( 166 void SynchronousCompositorProxy::DoDemandDrawHw(
166 const SyncCompositorDemandDrawHwParams& params, 167 const SyncCompositorDemandDrawHwParams& params,
167 IPC::Message* reply_message) { 168 IPC::Message* reply_message) {
168 DCHECK(!inside_receive_); 169 DCHECK(!inside_receive_);
169 inside_receive_ = true; 170 inside_receive_ = true;
170 171
171 if (output_surface_) { 172 if (compositor_frame_sink_) {
172 if (!reply_message) { 173 if (!reply_message) {
173 base::AutoReset<bool> scoped_hardware_draw_reply_async( 174 base::AutoReset<bool> scoped_hardware_draw_reply_async(
174 &hardware_draw_reply_async_, true); 175 &hardware_draw_reply_async_, true);
175 output_surface_->DemandDrawHw(params.viewport_size, 176 compositor_frame_sink_->DemandDrawHw(
176 params.viewport_rect_for_tile_priority, 177 params.viewport_size, params.viewport_rect_for_tile_priority,
177 params.transform_for_tile_priority); 178 params.transform_for_tile_priority);
178 } else { 179 } else {
179 base::AutoReset<IPC::Message*> scoped_hardware_draw_reply( 180 base::AutoReset<IPC::Message*> scoped_hardware_draw_reply(
180 &hardware_draw_reply_, reply_message); 181 &hardware_draw_reply_, reply_message);
181 output_surface_->DemandDrawHw(params.viewport_size, 182 compositor_frame_sink_->DemandDrawHw(
182 params.viewport_rect_for_tile_priority, 183 params.viewport_size, params.viewport_rect_for_tile_priority,
183 params.transform_for_tile_priority); 184 params.transform_for_tile_priority);
184 } 185 }
185 } 186 }
186 187
187 if (inside_receive_) { 188 if (inside_receive_) {
188 // Did not swap. 189 // Did not swap.
189 if (!reply_message) { 190 if (!reply_message) {
190 SendDemandDrawHwReplyAsync(cc::CompositorFrame(), 0u); 191 SendDemandDrawHwReplyAsync(cc::CompositorFrame(), 0u);
191 } else { 192 } else {
192 SendDemandDrawHwReply(cc::CompositorFrame(), 0u, reply_message); 193 SendDemandDrawHwReply(cc::CompositorFrame(), 0u, reply_message);
193 } 194 }
194 inside_receive_ = false; 195 inside_receive_ = false;
195 } 196 }
196 } 197 }
197 198
198 void SynchronousCompositorProxy::SwapBuffersHwAsync(uint32_t output_surface_id, 199 void SynchronousCompositorProxy::SwapBuffersHwAsync(
199 cc::CompositorFrame frame) { 200 uint32_t compositor_frame_sink_id,
201 cc::CompositorFrame frame) {
200 DCHECK(inside_receive_); 202 DCHECK(inside_receive_);
201 DCHECK(hardware_draw_reply_async_); 203 DCHECK(hardware_draw_reply_async_);
202 SendDemandDrawHwReplyAsync(std::move(frame), output_surface_id); 204 SendDemandDrawHwReplyAsync(std::move(frame), compositor_frame_sink_id);
203 inside_receive_ = false; 205 inside_receive_ = false;
204 } 206 }
205 207
206 void SynchronousCompositorProxy::SwapBuffersHw(uint32_t output_surface_id, 208 void SynchronousCompositorProxy::SwapBuffersHw(
207 cc::CompositorFrame frame) { 209 uint32_t compositor_frame_sink_id,
210 cc::CompositorFrame frame) {
208 DCHECK(inside_receive_); 211 DCHECK(inside_receive_);
209 DCHECK(hardware_draw_reply_); 212 DCHECK(hardware_draw_reply_);
210 SendDemandDrawHwReply(std::move(frame), output_surface_id, 213 SendDemandDrawHwReply(std::move(frame), compositor_frame_sink_id,
211 hardware_draw_reply_); 214 hardware_draw_reply_);
212 inside_receive_ = false; 215 inside_receive_ = false;
213 } 216 }
214 217
215 void SynchronousCompositorProxy::SendDemandDrawHwReplyAsync( 218 void SynchronousCompositorProxy::SendDemandDrawHwReplyAsync(
216 cc::CompositorFrame frame, 219 cc::CompositorFrame frame,
217 uint32_t output_surface_id) { 220 uint32_t compositor_frame_sink_id) {
218 Send(new SyncCompositorHostMsg_ReturnFrame(routing_id_, output_surface_id, 221 Send(new SyncCompositorHostMsg_ReturnFrame(routing_id_,
219 frame)); 222 compositor_frame_sink_id, frame));
220 } 223 }
221 224
222 void SynchronousCompositorProxy::SendDemandDrawHwReply( 225 void SynchronousCompositorProxy::SendDemandDrawHwReply(
223 cc::CompositorFrame frame, 226 cc::CompositorFrame frame,
224 uint32_t output_surface_id, 227 uint32_t compositor_frame_sink_id,
225 IPC::Message* reply_message) { 228 IPC::Message* reply_message) {
226 SyncCompositorCommonRendererParams common_renderer_params; 229 SyncCompositorCommonRendererParams common_renderer_params;
227 PopulateCommonParams(&common_renderer_params); 230 PopulateCommonParams(&common_renderer_params);
228 SyncCompositorMsg_DemandDrawHw::WriteReplyParams( 231 SyncCompositorMsg_DemandDrawHw::WriteReplyParams(
229 reply_message, common_renderer_params, output_surface_id, frame); 232 reply_message, common_renderer_params, compositor_frame_sink_id, frame);
230 Send(reply_message); 233 Send(reply_message);
231 } 234 }
232 235
233 struct SynchronousCompositorProxy::SharedMemoryWithSize { 236 struct SynchronousCompositorProxy::SharedMemoryWithSize {
234 base::SharedMemory shm; 237 base::SharedMemory shm;
235 const size_t buffer_size; 238 const size_t buffer_size;
236 bool zeroed; 239 bool zeroed;
237 240
238 SharedMemoryWithSize(base::SharedMemoryHandle shm_handle, size_t buffer_size) 241 SharedMemoryWithSize(base::SharedMemoryHandle shm_handle, size_t buffer_size)
239 : shm(shm_handle, false), buffer_size(buffer_size), zeroed(true) {} 242 : shm(shm_handle, false), buffer_size(buffer_size), zeroed(true) {}
(...skipping 14 matching lines...) Expand all
254 new SharedMemoryWithSize(params.shm_handle, params.buffer_size)); 257 new SharedMemoryWithSize(params.shm_handle, params.buffer_size));
255 if (!software_draw_shm_->shm.Map(params.buffer_size)) 258 if (!software_draw_shm_->shm.Map(params.buffer_size))
256 return; 259 return;
257 DCHECK(software_draw_shm_->shm.memory()); 260 DCHECK(software_draw_shm_->shm.memory());
258 PopulateCommonParams(common_renderer_params); 261 PopulateCommonParams(common_renderer_params);
259 *success = true; 262 *success = true;
260 } 263 }
261 264
262 void SynchronousCompositorProxy::ZeroSharedMemory() { 265 void SynchronousCompositorProxy::ZeroSharedMemory() {
263 // It is possible for this to get called twice, eg. if draw is called before 266 // It is possible for this to get called twice, eg. if draw is called before
264 // the OutputSurface is ready. Just ignore duplicated calls rather than 267 // the CompositorFrameSink is ready. Just ignore duplicated calls rather than
265 // inventing a complicated system to avoid it. 268 // inventing a complicated system to avoid it.
266 if (software_draw_shm_->zeroed) 269 if (software_draw_shm_->zeroed)
267 return; 270 return;
268 271
269 memset(software_draw_shm_->shm.memory(), 0, software_draw_shm_->buffer_size); 272 memset(software_draw_shm_->shm.memory(), 0, software_draw_shm_->buffer_size);
270 software_draw_shm_->zeroed = true; 273 software_draw_shm_->zeroed = true;
271 } 274 }
272 275
273 void SynchronousCompositorProxy::DemandDrawSw( 276 void SynchronousCompositorProxy::DemandDrawSw(
274 const SyncCompositorDemandDrawSwParams& params, 277 const SyncCompositorDemandDrawSwParams& params,
275 IPC::Message* reply_message) { 278 IPC::Message* reply_message) {
276 DCHECK(!inside_receive_); 279 DCHECK(!inside_receive_);
277 inside_receive_ = true; 280 inside_receive_ = true;
278 if (output_surface_) { 281 if (compositor_frame_sink_) {
279 base::AutoReset<IPC::Message*> scoped_software_draw_reply( 282 base::AutoReset<IPC::Message*> scoped_software_draw_reply(
280 &software_draw_reply_, reply_message); 283 &software_draw_reply_, reply_message);
281 SkCanvas* sk_canvas_for_draw = SynchronousCompositorGetSkCanvas(); 284 SkCanvas* sk_canvas_for_draw = SynchronousCompositorGetSkCanvas();
282 if (use_in_process_zero_copy_software_draw_) { 285 if (use_in_process_zero_copy_software_draw_) {
283 DCHECK(sk_canvas_for_draw); 286 DCHECK(sk_canvas_for_draw);
284 output_surface_->DemandDrawSw(sk_canvas_for_draw); 287 compositor_frame_sink_->DemandDrawSw(sk_canvas_for_draw);
285 } else { 288 } else {
286 DCHECK(!sk_canvas_for_draw); 289 DCHECK(!sk_canvas_for_draw);
287 DoDemandDrawSw(params); 290 DoDemandDrawSw(params);
288 } 291 }
289 } 292 }
290 if (inside_receive_) { 293 if (inside_receive_) {
291 // Did not swap. 294 // Did not swap.
292 SendDemandDrawSwReply(false, cc::CompositorFrame(), reply_message); 295 SendDemandDrawSwReply(false, cc::CompositorFrame(), reply_message);
293 inside_receive_ = false; 296 inside_receive_ = false;
294 } 297 }
295 } 298 }
296 299
297 void SynchronousCompositorProxy::DoDemandDrawSw( 300 void SynchronousCompositorProxy::DoDemandDrawSw(
298 const SyncCompositorDemandDrawSwParams& params) { 301 const SyncCompositorDemandDrawSwParams& params) {
299 DCHECK(output_surface_); 302 DCHECK(compositor_frame_sink_);
300 DCHECK(software_draw_shm_->zeroed); 303 DCHECK(software_draw_shm_->zeroed);
301 software_draw_shm_->zeroed = false; 304 software_draw_shm_->zeroed = false;
302 305
303 SkImageInfo info = 306 SkImageInfo info =
304 SkImageInfo::MakeN32Premul(params.size.width(), params.size.height()); 307 SkImageInfo::MakeN32Premul(params.size.width(), params.size.height());
305 size_t stride = info.minRowBytes(); 308 size_t stride = info.minRowBytes();
306 size_t buffer_size = info.getSafeSize(stride); 309 size_t buffer_size = info.getSafeSize(stride);
307 DCHECK_EQ(software_draw_shm_->buffer_size, buffer_size); 310 DCHECK_EQ(software_draw_shm_->buffer_size, buffer_size);
308 311
309 SkBitmap bitmap; 312 SkBitmap bitmap;
310 if (!bitmap.installPixels(info, software_draw_shm_->shm.memory(), stride)) 313 if (!bitmap.installPixels(info, software_draw_shm_->shm.memory(), stride))
311 return; 314 return;
312 SkCanvas canvas(bitmap); 315 SkCanvas canvas(bitmap);
313 canvas.setMatrix(params.transform.matrix()); 316 canvas.setMatrix(params.transform.matrix());
314 canvas.setClipRegion(SkRegion(gfx::RectToSkIRect(params.clip))); 317 canvas.setClipRegion(SkRegion(gfx::RectToSkIRect(params.clip)));
315 318
316 output_surface_->DemandDrawSw(&canvas); 319 compositor_frame_sink_->DemandDrawSw(&canvas);
317 } 320 }
318 321
319 void SynchronousCompositorProxy::SwapBuffersSw(cc::CompositorFrame frame) { 322 void SynchronousCompositorProxy::SwapBuffersSw(cc::CompositorFrame frame) {
320 DCHECK(inside_receive_); 323 DCHECK(inside_receive_);
321 DCHECK(software_draw_reply_); 324 DCHECK(software_draw_reply_);
322 SendDemandDrawSwReply(true, std::move(frame), software_draw_reply_); 325 SendDemandDrawSwReply(true, std::move(frame), software_draw_reply_);
323 inside_receive_ = false; 326 inside_receive_ = false;
324 } 327 }
325 328
326 void SynchronousCompositorProxy::SendDemandDrawSwReply( 329 void SynchronousCompositorProxy::SendDemandDrawSwReply(
327 bool success, 330 bool success,
328 cc::CompositorFrame frame, 331 cc::CompositorFrame frame,
329 IPC::Message* reply_message) { 332 IPC::Message* reply_message) {
330 SyncCompositorCommonRendererParams common_renderer_params; 333 SyncCompositorCommonRendererParams common_renderer_params;
331 PopulateCommonParams(&common_renderer_params); 334 PopulateCommonParams(&common_renderer_params);
332 SyncCompositorMsg_DemandDrawSw::WriteReplyParams( 335 SyncCompositorMsg_DemandDrawSw::WriteReplyParams(
333 reply_message, success, common_renderer_params, frame); 336 reply_message, success, common_renderer_params, frame);
334 Send(reply_message); 337 Send(reply_message);
335 } 338 }
336 339
337 void SynchronousCompositorProxy::SwapBuffers(uint32_t output_surface_id, 340 void SynchronousCompositorProxy::SwapBuffers(uint32_t compositor_frame_sink_id,
338 cc::CompositorFrame frame) { 341 cc::CompositorFrame frame) {
339 // Verify that exactly one of these is true. 342 // Verify that exactly one of these is true.
340 DCHECK(hardware_draw_reply_async_ || hardware_draw_reply_ || 343 DCHECK(hardware_draw_reply_async_ || hardware_draw_reply_ ||
341 software_draw_reply_); 344 software_draw_reply_);
342 DCHECK(!((hardware_draw_reply_ && software_draw_reply_) || 345 DCHECK(!((hardware_draw_reply_ && software_draw_reply_) ||
343 (hardware_draw_reply_ && hardware_draw_reply_async_) || 346 (hardware_draw_reply_ && hardware_draw_reply_async_) ||
344 (software_draw_reply_ && hardware_draw_reply_async_))); 347 (software_draw_reply_ && hardware_draw_reply_async_)));
345 if (hardware_draw_reply_async_) { 348 if (hardware_draw_reply_async_) {
346 SwapBuffersHwAsync(output_surface_id, std::move(frame)); 349 SwapBuffersHwAsync(compositor_frame_sink_id, std::move(frame));
347 } else if (hardware_draw_reply_) { 350 } else if (hardware_draw_reply_) {
348 SwapBuffersHw(output_surface_id, std::move(frame)); 351 SwapBuffersHw(compositor_frame_sink_id, std::move(frame));
349 } else if (software_draw_reply_) { 352 } else if (software_draw_reply_) {
350 SwapBuffersSw(std::move(frame)); 353 SwapBuffersSw(std::move(frame));
351 } 354 }
352 } 355 }
353 356
354 void SynchronousCompositorProxy::OnComputeScroll( 357 void SynchronousCompositorProxy::OnComputeScroll(
355 base::TimeTicks animation_time) { 358 base::TimeTicks animation_time) {
356 if (need_animate_scroll_) { 359 if (need_animate_scroll_) {
357 need_animate_scroll_ = false; 360 need_animate_scroll_ = false;
358 input_handler_proxy_->SynchronouslyAnimate(animation_time); 361 input_handler_proxy_->SynchronouslyAnimate(animation_time);
(...skipping 12 matching lines...) Expand all
371 374
372 void SynchronousCompositorProxy::SetScroll( 375 void SynchronousCompositorProxy::SetScroll(
373 const gfx::ScrollOffset& new_total_scroll_offset) { 376 const gfx::ScrollOffset& new_total_scroll_offset) {
374 if (total_scroll_offset_ == new_total_scroll_offset) 377 if (total_scroll_offset_ == new_total_scroll_offset)
375 return; 378 return;
376 total_scroll_offset_ = new_total_scroll_offset; 379 total_scroll_offset_ = new_total_scroll_offset;
377 input_handler_proxy_->SynchronouslySetRootScrollOffset(total_scroll_offset_); 380 input_handler_proxy_->SynchronouslySetRootScrollOffset(total_scroll_offset_);
378 } 381 }
379 382
380 } // namespace content 383 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/android/synchronous_compositor_proxy.h ('k') | content/renderer/android/synchronous_compositor_registry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698