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

Side by Side Diff: content/browser/frame_host/render_widget_host_view_guest.cc

Issue 2527283003: cc: Introduce BeginFrame sequence numbers and acknowledgements.
Patch Set: Address Brian's comments. Created 4 years 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/frame_host/render_widget_host_view_guest.h" 5 #include "content/browser/frame_host/render_widget_host_view_guest.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 current_surface_size_ = frame_size; 305 current_surface_size_ = frame_size;
306 current_surface_scale_factor_ = scale_factor; 306 current_surface_scale_factor_ = scale_factor;
307 } 307 }
308 308
309 bool allocated_new_local_frame_id = false; 309 bool allocated_new_local_frame_id = false;
310 if (!local_frame_id_.is_valid()) { 310 if (!local_frame_id_.is_valid()) {
311 local_frame_id_ = id_allocator_->GenerateId(); 311 local_frame_id_ = id_allocator_->GenerateId();
312 allocated_new_local_frame_id = true; 312 allocated_new_local_frame_id = true;
313 } 313 }
314 314
315 uint64_t begin_frame_source_id = frame.metadata.begin_frame_source_id;
316 uint64_t begin_frame_number = frame.metadata.begin_frame_number;
317 uint64_t latest_confirmed_frame = frame.metadata.latest_confirmed_frame;
318
315 cc::SurfaceFactory::DrawCallback ack_callback = base::Bind( 319 cc::SurfaceFactory::DrawCallback ack_callback = base::Bind(
316 &RenderWidgetHostViewChildFrame::SurfaceDrawn, 320 &RenderWidgetHostViewChildFrame::SurfaceDrawn,
317 RenderWidgetHostViewChildFrame::AsWeakPtr(), compositor_frame_sink_id); 321 RenderWidgetHostViewChildFrame::AsWeakPtr(), compositor_frame_sink_id);
318 ack_pending_count_++; 322 ack_pending_count_++;
319 // If this value grows very large, something is going wrong. 323 // If this value grows very large, something is going wrong.
320 DCHECK(ack_pending_count_ < 1000); 324 DCHECK(ack_pending_count_ < 1000);
321 surface_factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame), 325 surface_factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
322 ack_callback); 326 ack_callback);
323 327
324 if (allocated_new_local_frame_id) { 328 if (allocated_new_local_frame_id) {
(...skipping 13 matching lines...) Expand all
338 sequence); 342 sequence);
339 } 343 }
340 } 344 }
341 ProcessFrameSwappedCallbacks(); 345 ProcessFrameSwappedCallbacks();
342 346
343 // If after detaching we are sent a frame, we should finish processing it, and 347 // If after detaching we are sent a frame, we should finish processing it, and
344 // then we should clear the surface so that we are not holding resources we 348 // then we should clear the surface so that we are not holding resources we
345 // no longer need. 349 // no longer need.
346 if (!guest_ || !guest_->attached()) 350 if (!guest_ || !guest_->attached())
347 ClearCompositorSurfaceIfNecessary(); 351 ClearCompositorSurfaceIfNecessary();
352
353 DidSwapFrame(begin_frame_source_id, begin_frame_number,
354 latest_confirmed_frame);
348 } 355 }
349 356
350 bool RenderWidgetHostViewGuest::OnMessageReceived(const IPC::Message& msg) { 357 bool RenderWidgetHostViewGuest::OnMessageReceived(const IPC::Message& msg) {
351 if (!platform_view_) { 358 if (!platform_view_) {
352 // In theory, we can get here if there's a delay between Destroy() 359 // In theory, we can get here if there's a delay between Destroy()
353 // being called and when our destructor is invoked. 360 // being called and when our destructor is invoked.
354 return false; 361 return false;
355 } 362 }
356 363
357 return platform_view_->OnMessageReceived(msg); 364 return platform_view_->OnMessageReceived(msg);
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 gesture_event.data.scrollUpdate.inertialPhase == 696 gesture_event.data.scrollUpdate.inertialPhase ==
690 blink::WebGestureEvent::MomentumPhase) { 697 blink::WebGestureEvent::MomentumPhase) {
691 return; 698 return;
692 } 699 }
693 host_->ForwardGestureEvent(gesture_event); 700 host_->ForwardGestureEvent(gesture_event);
694 return; 701 return;
695 } 702 }
696 } 703 }
697 704
698 } // namespace content 705 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698