From ffbb8cd7cd6bc8b6ff0c73e3fc45cb2f74e0f4c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= <juri.valdmann@qt.io> Date: Tue, 27 Aug 2019 09:42:34 +0200 Subject: [PATCH] Fix RenderWidgetHostViewQt::SetNeedsBeginFrames Turns out this is needed also in viz mode for fling gestures. Fixes: QTBUG-77861 Change-Id: I6fe9d37e00e6a7fd17280d76273527066cc879a4 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> --- src/core/delegated_frame_host_client_qt.cpp | 1 + src/core/render_widget_host_view_qt.cpp | 15 +++++++++++++-- src/core/render_widget_host_view_qt.h | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/core/delegated_frame_host_client_qt.cpp b/src/core/delegated_frame_host_client_qt.cpp index d3f5a4ade..817ea2fa5 100644 --- a/src/core/delegated_frame_host_client_qt.cpp +++ b/src/core/delegated_frame_host_client_qt.cpp @@ -61,6 +61,7 @@ SkColor DelegatedFrameHostClientQt::DelegatedFrameHostGetGutterColor() const void DelegatedFrameHostClientQt::OnBeginFrame(base::TimeTicks frame_time) { p->host()->ProgressFlingIfNeeded(frame_time); + p->UpdateNeedsBeginFramesInternal(); } void DelegatedFrameHostClientQt::OnFrameTokenChanged(uint32_t frame_token) diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 2918fd8bc..e741962fb 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -280,6 +280,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget , m_touchMotionStarted(false) , m_enableViz(features::IsVizDisplayCompositorEnabled()) , m_visible(false) + , m_needsBeginFrames(false) , m_loadVisuallyCommittedState(NotCommitted) , m_adapterClient(0) , m_imeInProgress(false) @@ -1741,8 +1742,8 @@ void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev) void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames) { - DCHECK(!m_enableViz); - m_compositor->setNeedsBeginFrames(needs_begin_frames); + m_needsBeginFrames = needs_begin_frames; + UpdateNeedsBeginFramesInternal(); } content::RenderFrameHost *RenderWidgetHostViewQt::getFocusedFrameHost() @@ -1777,6 +1778,8 @@ ui::TextInputType RenderWidgetHostViewQt::getTextInputType() const void RenderWidgetHostViewQt::SetWantsAnimateOnlyBeginFrames() { + if (m_enableViz) + m_delegatedFrameHost->SetWantsAnimateOnlyBeginFrames(); } viz::SurfaceId RenderWidgetHostViewQt::GetCurrentSurfaceId() const @@ -1877,4 +1880,12 @@ std::unique_ptr<content::SyntheticGestureTarget> RenderWidgetHostViewQt::CreateS return nullptr; } +void RenderWidgetHostViewQt::UpdateNeedsBeginFramesInternal() +{ + if (m_enableViz) + m_delegatedFrameHost->SetNeedsBeginFrames(m_needsBeginFrames); + else + m_compositor->setNeedsBeginFrames(m_needsBeginFrames); +} + } // namespace QtWebEngineCore diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 5935f477a..b5f2d65bb 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -214,6 +214,7 @@ public: void ShowDefinitionForSelection() override { QT_NOT_YET_IMPLEMENTED } #endif // defined(OS_MACOSX) + void UpdateNeedsBeginFramesInternal(); // Overridden from content::BrowserAccessibilityDelegate content::BrowserAccessibilityManager* CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate, bool for_root_frame) override; @@ -269,6 +270,7 @@ private: const bool m_enableViz; bool m_visible; + bool m_needsBeginFrames; DelegatedFrameHostClientQt m_delegatedFrameHostClient{this}; std::unique_ptr<content::DelegatedFrameHost> m_delegatedFrameHost; std::unique_ptr<ui::Layer> m_rootLayer; -- GitLab