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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2740833005: [cc] Pass on BeginFrameAcks from CompositorEBFS through RWHVAura, DFH. (Closed)
Patch Set: Created 3 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 bool is_guest_view_hack) 380 bool is_guest_view_hack)
381 : host_(RenderWidgetHostImpl::From(host)), 381 : host_(RenderWidgetHostImpl::From(host)),
382 window_(nullptr), 382 window_(nullptr),
383 in_shutdown_(false), 383 in_shutdown_(false),
384 in_bounds_changed_(false), 384 in_bounds_changed_(false),
385 popup_parent_host_view_(nullptr), 385 popup_parent_host_view_(nullptr),
386 popup_child_host_view_(nullptr), 386 popup_child_host_view_(nullptr),
387 is_loading_(false), 387 is_loading_(false),
388 has_composition_text_(false), 388 has_composition_text_(false),
389 begin_frame_source_(nullptr), 389 begin_frame_source_(nullptr),
390 latest_confirmed_begin_frame_sequence_number_(
391 cc::BeginFrameArgs::kInvalidFrameNumber),
390 needs_begin_frames_(false), 392 needs_begin_frames_(false),
391 needs_flush_input_(false), 393 needs_flush_input_(false),
392 added_frame_observer_(false), 394 added_frame_observer_(false),
393 cursor_visibility_state_in_renderer_(UNKNOWN), 395 cursor_visibility_state_in_renderer_(UNKNOWN),
394 #if defined(OS_WIN) 396 #if defined(OS_WIN)
395 legacy_render_widget_host_HWND_(nullptr), 397 legacy_render_widget_host_HWND_(nullptr),
396 legacy_window_destroyed_(false), 398 legacy_window_destroyed_(false),
397 virtual_keyboard_requested_(false), 399 virtual_keyboard_requested_(false),
398 #endif 400 #endif
399 has_snapped_to_boundary_(false), 401 has_snapped_to_boundary_(false),
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 if (needs_frame == added_frame_observer_) 670 if (needs_frame == added_frame_observer_)
669 return; 671 return;
670 672
671 added_frame_observer_ = needs_frame; 673 added_frame_observer_ = needs_frame;
672 if (needs_frame) 674 if (needs_frame)
673 begin_frame_source_->AddObserver(this); 675 begin_frame_source_->AddObserver(this);
674 else 676 else
675 begin_frame_source_->RemoveObserver(this); 677 begin_frame_source_->RemoveObserver(this);
676 } 678 }
677 679
678 void RenderWidgetHostViewAura::OnBeginFrame( 680 void RenderWidgetHostViewAura::OnBeginFrame(const cc::BeginFrameArgs& args) {
679 const cc::BeginFrameArgs& args) { 681 if (args.source_id != last_begin_frame_args_.source_id) {
682 // Source changed, we don't know our freshness anymore.
683 latest_confirmed_begin_frame_sequence_number_ =
684 cc::BeginFrameArgs::kInvalidFrameNumber;
685 }
686
680 needs_flush_input_ = false; 687 needs_flush_input_ = false;
681 host_->FlushInput(); 688 host_->FlushInput();
682 UpdateNeedsBeginFramesInternal(); 689 UpdateNeedsBeginFramesInternal();
683 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); 690 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
684 last_begin_frame_args_ = args; 691 last_begin_frame_args_ = args;
685 } 692 }
686 693
687 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs() 694 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs()
688 const { 695 const {
689 return last_begin_frame_args_; 696 return last_begin_frame_args_;
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 selection.start.SetEdge(start_edge_top, start_edge_bottom); 950 selection.start.SetEdge(start_edge_top, start_edge_bottom);
944 selection.end.SetEdge(end_edge_top, end_edge_bottom); 951 selection.end.SetEdge(end_edge_top, end_edge_bottom);
945 } 952 }
946 953
947 if (delegated_frame_host_) { 954 if (delegated_frame_host_) {
948 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id, 955 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id,
949 std::move(frame)); 956 std::move(frame));
950 } 957 }
951 selection_controller_->OnSelectionBoundsChanged(selection.start, 958 selection_controller_->OnSelectionBoundsChanged(selection.start,
952 selection.end); 959 selection.end);
960
961 cc::BeginFrameAck ack(frame.metadata.begin_frame_ack);
962 DCHECK_LE(cc::BeginFrameArgs::kStartingFrameNumber, ack.sequence_number);
963 // The CompositorFrame's damage was only incorporated if it wasn't skipped.
964 if (delegated_frame_host_->skipped_frames()) {
965 ack.has_damage = false;
966 ack.latest_confirmed_sequence_number =
967 latest_confirmed_begin_frame_sequence_number_;
968 } else {
969 DCHECK(ack.has_damage);
970 latest_confirmed_begin_frame_sequence_number_ =
971 ack.latest_confirmed_sequence_number;
972 }
973
974 if (begin_frame_source_)
975 begin_frame_source_->DidFinishFrame(this, ack);
Eric Seckler 2017/03/14 11:13:41 +fsamuel, +brianderson: Regarding the discussion
Fady Samuel 2017/03/14 11:31:38 Could we do this from Surface::ActivateFrame then,
976 }
977
978 void RenderWidgetHostViewAura::OnBeginFrameDidNotDraw(
979 const cc::BeginFrameAck& ack) {
980 DCHECK_LE(cc::BeginFrameArgs::kStartingFrameNumber, ack.sequence_number);
981 DCHECK(!ack.has_damage);
982 cc::BeginFrameAck modified_ack = ack;
983 if (delegated_frame_host_->skipped_frames()) {
984 // If DelegatedFrameHost skipped the last frame(s), we need to wait for a
985 // newly submitted CompositorFrame before confirming newer sequence numbers.
986 modified_ack.latest_confirmed_sequence_number =
987 latest_confirmed_begin_frame_sequence_number_;
988 }
989 if (begin_frame_source_)
990 begin_frame_source_->DidFinishFrame(this, modified_ack);
953 } 991 }
954 992
955 void RenderWidgetHostViewAura::ClearCompositorFrame() { 993 void RenderWidgetHostViewAura::ClearCompositorFrame() {
956 if (delegated_frame_host_) 994 if (delegated_frame_host_)
957 delegated_frame_host_->ClearDelegatedFrame(); 995 delegated_frame_host_->ClearDelegatedFrame();
958 } 996 }
959 997
960 void RenderWidgetHostViewAura::DidStopFlinging() { 998 void RenderWidgetHostViewAura::DidStopFlinging() {
961 selection_controller_client_->OnScrollCompleted(); 999 selection_controller_client_->OnScrollCompleted();
962 } 1000 }
(...skipping 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2376 2414
2377 void RenderWidgetHostViewAura::SetPopupChild( 2415 void RenderWidgetHostViewAura::SetPopupChild(
2378 RenderWidgetHostViewAura* popup_child_host_view) { 2416 RenderWidgetHostViewAura* popup_child_host_view) {
2379 popup_child_host_view_ = popup_child_host_view; 2417 popup_child_host_view_ = popup_child_host_view;
2380 event_handler_->SetPopupChild( 2418 event_handler_->SetPopupChild(
2381 popup_child_host_view, 2419 popup_child_host_view,
2382 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr); 2420 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr);
2383 } 2421 }
2384 2422
2385 } // namespace content 2423 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698