summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-14 16:29:35 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-14 17:01:00 +0000
commit20238f2c472af7b94d48a837d7723a209a87fd9e (patch)
treee502f3becebcb13dd3e7c42c78d484995fc5bc1d /src/core
parent8ab92fa543d4c92fc8859fdc4e9d0a7bc5461248 (diff)
Fix autoscrolling
We were missing the connection between on begin frame and progressing auto-scroll. Change-Id: I651b35c031afedc9aeef1dc6a16547757b869633 Fixes: QTBUG-71370 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/compositor.cpp11
-rw-r--r--src/core/compositor.h4
-rw-r--r--src/core/render_widget_host_view_qt.cpp7
-rw-r--r--src/core/render_widget_host_view_qt.h1
4 files changed, 17 insertions, 6 deletions
diff --git a/src/core/compositor.cpp b/src/core/compositor.cpp
index 5dd053718..f7a5e651c 100644
--- a/src/core/compositor.cpp
+++ b/src/core/compositor.cpp
@@ -40,15 +40,17 @@
#include "compositor.h"
#include "delegated_frame_node.h"
+#include "render_widget_host_view_qt.h"
-#include <components/viz/common/resources/returned_resource.h>
-#include <content/public/browser/browser_thread.h>
-#include <services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h>
+#include "components/viz/common/resources/returned_resource.h"
+#include "content/public/browser/browser_thread.h"
+#include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h"
namespace QtWebEngineCore {
-Compositor::Compositor()
+Compositor::Compositor(RenderWidgetHostViewQt *hostView)
: m_chromiumCompositorData(new ChromiumCompositorData)
+ , m_view(hostView)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -163,6 +165,7 @@ bool Compositor::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs &args)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ m_view->OnBeginFrame(args.frame_time);
m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval);
if (m_frameSinkClient)
m_frameSinkClient->OnBeginFrame(args);
diff --git a/src/core/compositor.h b/src/core/compositor.h
index 4852d0590..7d7db5d04 100644
--- a/src/core/compositor.h
+++ b/src/core/compositor.h
@@ -60,6 +60,7 @@ class CompositorFrameSinkClient;
namespace QtWebEngineCore {
+class RenderWidgetHostViewQt;
class RenderWidgetHostViewQtDelegate;
class ChromiumCompositorData;
@@ -84,7 +85,7 @@ class ChromiumCompositorData;
class Compositor final : private viz::BeginFrameObserverBase
{
public:
- explicit Compositor();
+ explicit Compositor(RenderWidgetHostViewQt *hostView);
~Compositor() override;
void setViewDelegate(RenderWidgetHostViewQtDelegate *viewDelegate);
@@ -105,6 +106,7 @@ private:
std::vector<viz::ReturnedResource> m_resourcesToRelease;
QExplicitlySharedDataPointer<ChromiumCompositorData> m_chromiumCompositorData;
+ RenderWidgetHostViewQt *m_view;
RenderWidgetHostViewQtDelegate *m_viewDelegate = nullptr;
std::unique_ptr<viz::SyntheticBeginFrameSource> m_beginFrameSource;
viz::mojom::CompositorFrameSinkClient *m_frameSinkClient = nullptr;
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 9706ac070..4ed62504f 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -260,7 +260,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget
, m_gestureProvider(QtGestureProviderConfig(), this)
, m_sendMotionActionDown(false)
, m_touchMotionStarted(false)
- , m_compositor(new Compositor)
+ , m_compositor(new Compositor(this))
, m_loadVisuallyCommittedState(NotCommitted)
, m_adapterClient(0)
, m_imeInProgress(false)
@@ -1637,6 +1637,11 @@ void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames)
m_compositor->setNeedsBeginFrames(needs_begin_frames);
}
+void RenderWidgetHostViewQt::OnBeginFrame(base::TimeTicks frame_time)
+{
+ host()->ProgressFlingIfNeeded(frame_time);
+}
+
content::RenderFrameHost *RenderWidgetHostViewQt::getFocusedFrameHost()
{
content::RenderViewHostImpl *viewHost = content::RenderViewHostImpl::From(host());
diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h
index 8db3351f4..6dd4d57e5 100644
--- a/src/core/render_widget_host_view_qt.h
+++ b/src/core/render_widget_host_view_qt.h
@@ -112,6 +112,7 @@ public:
RenderWidgetHostViewQtDelegate *delegate() { return m_delegate.get(); }
void setDelegate(RenderWidgetHostViewQtDelegate *delegate);
void setAdapterClient(WebContentsAdapterClient *adapterClient);
+ void OnBeginFrame(base::TimeTicks frame_time);
void InitAsChild(gfx::NativeView) override;
void InitAsPopup(content::RenderWidgetHostView*, const gfx::Rect&) override;