summaryrefslogtreecommitdiffstats
path: root/src/core/compositor
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-17 17:51:50 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-01-28 19:03:32 +0000
commite63b35763907304089d961bc3e284178d36c69a3 (patch)
treee3fe946240ddfe6b29ce5b72dd16a1db6855f4f1 /src/core/compositor
parent5e66cbc85a350616070a318f917cb181313c4afa (diff)
Adaptations for Chromium 70
Change-Id: I8bb77784dbc8a0b9debd96a4c49421bd34e6a0df Reviewed-by: Michael Brüning <michael.bruning@qt.io> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'src/core/compositor')
-rw-r--r--src/core/compositor/chromium_gpu_helper.cpp10
-rw-r--r--src/core/compositor/chromium_gpu_helper.h7
-rw-r--r--src/core/compositor/compositor.cpp7
-rw-r--r--src/core/compositor/compositor.h8
-rw-r--r--src/core/compositor/delegated_frame_node.cpp4
-rw-r--r--src/core/compositor/delegated_frame_node.h5
6 files changed, 31 insertions, 10 deletions
diff --git a/src/core/compositor/chromium_gpu_helper.cpp b/src/core/compositor/chromium_gpu_helper.cpp
index 2164f434f..71d0f3687 100644
--- a/src/core/compositor/chromium_gpu_helper.cpp
+++ b/src/core/compositor/chromium_gpu_helper.cpp
@@ -43,6 +43,11 @@
#include "chromium_gpu_helper.h"
+// Some headers include the namespace ws, and can not coexist with
+// Qt headers that include QTextStream, which includes most QSG headers
+// via QMatrix4x4.
+#include "content/browser/renderer_host/render_widget_host_impl.h"
+
// Including gpu/command_buffer headers before content/gpu headers makes sure that
// guards are defined to prevent duplicate definition errors with forward declared
// GL typedefs cascading through content header includes.
@@ -78,6 +83,11 @@ unsigned int service_id(gpu::TextureBase *tex)
return tex->service_id();
}
+void ProgressFlingIfNeeded(content::RenderWidgetHost *host, const base::TimeTicks &current_time)
+{
+ content::RenderWidgetHostImpl::From(host)->ProgressFlingIfNeeded(current_time);
+}
+
#ifdef Q_OS_QNX
EGLStreamData eglstream_connect_consumer(gpu::Texture *tex)
{
diff --git a/src/core/compositor/chromium_gpu_helper.h b/src/core/compositor/chromium_gpu_helper.h
index c2799204b..4086d12ab 100644
--- a/src/core/compositor/chromium_gpu_helper.h
+++ b/src/core/compositor/chromium_gpu_helper.h
@@ -46,6 +46,11 @@
namespace base {
class SingleThreadTaskRunner;
+class TimeTicks;
+}
+
+namespace content {
+class RenderWidgetHost;
}
namespace gpu {
@@ -65,6 +70,8 @@ gpu::MailboxManager *mailbox_manager();
gpu::TextureBase* ConsumeTexture(gpu::MailboxManager *mailboxManager, unsigned target, const gpu::Mailbox& mailbox);
unsigned int service_id(gpu::TextureBase *tex);
+void ProgressFlingIfNeeded(content::RenderWidgetHost *host, const base::TimeTicks &current_time);
+
#ifdef Q_OS_QNX
typedef void* EGLDisplay;
typedef void* EGLStreamKHR;
diff --git a/src/core/compositor/compositor.cpp b/src/core/compositor/compositor.cpp
index 77a973748..258fb47b4 100644
--- a/src/core/compositor/compositor.cpp
+++ b/src/core/compositor/compositor.cpp
@@ -41,7 +41,6 @@
#include "compositor_resource_tracker.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"
@@ -49,9 +48,9 @@
namespace QtWebEngineCore {
-Compositor::Compositor(RenderWidgetHostViewQt *hostView)
+Compositor::Compositor(content::RenderWidgetHost *host)
: m_resourceTracker(new CompositorResourceTracker)
- , m_view(hostView)
+ , m_host(host)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -171,7 +170,7 @@ bool Compositor::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs &args)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- m_view->OnBeginFrame(args.frame_time);
+ ProgressFlingIfNeeded(m_host, args.frame_time);
m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval);
if (m_frameSinkClient)
m_frameSinkClient->OnBeginFrame(args);
diff --git a/src/core/compositor/compositor.h b/src/core/compositor/compositor.h
index b025f901d..5efe419cc 100644
--- a/src/core/compositor/compositor.h
+++ b/src/core/compositor/compositor.h
@@ -54,6 +54,9 @@ QT_BEGIN_NAMESPACE
class QSGNode;
QT_END_NAMESPACE
+namespace content {
+class RenderWidgetHost;
+}
namespace viz {
struct ReturnedResource;
namespace mojom {
@@ -64,7 +67,6 @@ class CompositorFrameSinkClient;
namespace QtWebEngineCore {
class CompositorResourceTracker;
-class RenderWidgetHostViewQt;
class RenderWidgetHostViewQtDelegate;
// Receives viz::CompositorFrames from child compositors and provides QSGNodes
@@ -88,7 +90,7 @@ class RenderWidgetHostViewQtDelegate;
class Compositor final : private viz::BeginFrameObserverBase
{
public:
- explicit Compositor(RenderWidgetHostViewQt *hostView);
+ explicit Compositor(content::RenderWidgetHost *host);
~Compositor() override;
void setFrameSinkClient(viz::mojom::CompositorFrameSinkClient *frameSinkClient);
@@ -110,7 +112,7 @@ private:
viz::CompositorFrame m_pendingFrame;
base::OnceClosure m_submitCallback;
std::unique_ptr<CompositorResourceTracker> m_resourceTracker;
- RenderWidgetHostViewQt *m_view;
+ content::RenderWidgetHost *m_host;
std::unique_ptr<viz::SyntheticBeginFrameSource> m_beginFrameSource;
viz::mojom::CompositorFrameSinkClient *m_frameSinkClient = nullptr;
bool m_updatePaintNodeShouldCommit = false;
diff --git a/src/core/compositor/delegated_frame_node.cpp b/src/core/compositor/delegated_frame_node.cpp
index 49e3577de..a4fcf8daf 100644
--- a/src/core/compositor/delegated_frame_node.cpp
+++ b/src/core/compositor/delegated_frame_node.cpp
@@ -411,7 +411,9 @@ static QSGNode *buildLayerChain(QSGNode *chainParent, const viz::SharedQuadState
}
if (!layerState->quad_to_target_transform.IsIdentity()) {
QSGTransformNode *transformNode = new QSGTransformNode;
- transformNode->setMatrix(toQt(layerState->quad_to_target_transform.matrix()));
+ QMatrix4x4 qMatrix;
+ convertToQt(layerState->quad_to_target_transform.matrix(), qMatrix);
+ transformNode->setMatrix(qMatrix);
layerChain->appendChildNode(transformNode);
layerChain = transformNode;
}
diff --git a/src/core/compositor/delegated_frame_node.h b/src/core/compositor/delegated_frame_node.h
index a39ae864b..34e4ba029 100644
--- a/src/core/compositor/delegated_frame_node.h
+++ b/src/core/compositor/delegated_frame_node.h
@@ -43,9 +43,10 @@
#include "base/containers/circular_deque.h"
#include "components/viz/common/quads/compositor_frame.h"
#include "components/viz/common/quads/render_pass.h"
-#include <QSGNode>
-#include <QSharedPointer>
+
+#include <QtCore/QSharedPointer>
#include <QtGui/QOffscreenSurface>
+#include <QtQuick/QSGTransformNode>
#include "chromium_gpu_helper.h"
#include "render_widget_host_view_qt_delegate.h"