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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2372873003: Move synthetic gesture input to be aligned with BeginFrame. (Closed)
Patch Set: Fix unittests 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 5fb48340e8e0d9797cbd848df330f0bc9e38b379..fe65bc1d0651a379c827f89cdeadb5937170cf36 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -440,6 +440,9 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
has_composition_text_(false),
accept_return_character_(false),
begin_frame_source_(nullptr),
+ needs_begin_frames_(false),
+ needs_flush_input_(false),
+ added_frame_observer_(false),
synthetic_move_sent_(false),
cursor_visibility_state_in_renderer_(UNKNOWN),
#if defined(OS_WIN)
@@ -712,10 +715,25 @@ ui::TextInputClient* RenderWidgetHostViewAura::GetTextInputClient() {
}
void RenderWidgetHostViewAura::SetNeedsBeginFrames(bool needs_begin_frames) {
+ needs_begin_frames_ = needs_begin_frames;
+ UpdateNeedsBeginFramesInternal();
+}
+
+void RenderWidgetHostViewAura::OnSetNeedsFlushInput() {
+ needs_flush_input_ = true;
+ UpdateNeedsBeginFramesInternal();
+}
+
+void RenderWidgetHostViewAura::UpdateNeedsBeginFramesInternal() {
if (!begin_frame_source_)
return;
- if (needs_begin_frames)
+ bool needs_frame = needs_begin_frames_ || needs_flush_input_;
+ if (needs_frame == added_frame_observer_)
+ return;
+
+ added_frame_observer_ = needs_frame;
+ if (needs_frame)
begin_frame_source_->AddObserver(this);
else
begin_frame_source_->RemoveObserver(this);
@@ -723,6 +741,9 @@ void RenderWidgetHostViewAura::SetNeedsBeginFrames(bool needs_begin_frames) {
void RenderWidgetHostViewAura::OnBeginFrame(
const cc::BeginFrameArgs& args) {
+ needs_flush_input_ = false;
+ host_->FlushInput();
+ UpdateNeedsBeginFramesInternal();
host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
last_begin_frame_args_ = args;
}
@@ -2924,12 +2945,12 @@ void RenderWidgetHostViewAura::DelegatedFrameHostOnLostCompositorResources() {
void RenderWidgetHostViewAura::SetBeginFrameSource(
cc::BeginFrameSource* source) {
- bool needs_begin_frames = host_->needs_begin_frames();
- if (begin_frame_source_ && needs_begin_frames)
+ if (begin_frame_source_ && added_frame_observer_) {
begin_frame_source_->RemoveObserver(this);
+ added_frame_observer_ = false;
+ }
begin_frame_source_ = source;
- if (begin_frame_source_ && needs_begin_frames)
- begin_frame_source_->AddObserver(this);
+ UpdateNeedsBeginFramesInternal();
}
bool RenderWidgetHostViewAura::IsAutoResizeEnabled() const {

Powered by Google App Engine
This is Rietveld 408576698