summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/wayland/qwindow-compositor/qwindowcompositor.cpp15
-rw-r--r--examples/wayland/qwindow-compositor/qwindowcompositor.h1
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor.cpp27
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor.h5
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor_p.h1
-rw-r--r--src/compositor/compositor_api/qwaylandquickcompositor.cpp22
-rw-r--r--src/compositor/compositor_api/qwaylandquickcompositor.h4
7 files changed, 43 insertions, 32 deletions
diff --git a/examples/wayland/qwindow-compositor/qwindowcompositor.cpp b/examples/wayland/qwindow-compositor/qwindowcompositor.cpp
index fe2738f05..9f9a8e060 100644
--- a/examples/wayland/qwindow-compositor/qwindowcompositor.cpp
+++ b/examples/wayland/qwindow-compositor/qwindowcompositor.cpp
@@ -67,8 +67,8 @@ QT_BEGIN_NAMESPACE
class Surface : public QWaylandSurface
{
public:
- Surface()
- : QWaylandSurface()
+ Surface(QWaylandCompositor *compositor, QWaylandClient *client, uint id, int version)
+ : QWaylandSurface(compositor, client, id, version)
, shellSurface(Q_NULLPTR)
, extSurface(Q_NULLPTR)
, hasSentOnScreen(false)
@@ -151,6 +151,7 @@ void QWindowCompositor::create()
m_renderScheduler.setSingleShot(true);
connect(&m_renderScheduler, &QTimer::timeout, this, &QWindowCompositor::render);
+ connect(this, &QWaylandCompositor::createSurface, this, &QWindowCompositor::onCreateSurface);
connect(this, &QWaylandCompositor::surfaceCreated, this, &QWindowCompositor::onSurfaceCreated);
connect(defaultInputDevice(), &QWaylandInputDevice::cursorSurfaceRequest, this, &QWindowCompositor::adjustCursorSurface);
@@ -255,6 +256,11 @@ void QWindowCompositor::surfaceCommitted(QWaylandSurface *surface)
m_renderScheduler.start(0);
}
+void QWindowCompositor::onCreateSurface(QWaylandClient *client, uint id, int version)
+{
+ new Surface(this, client, id, version);
+}
+
void QWindowCompositor::onSurfaceCreated(QWaylandSurface *surface)
{
connect(surface, &QWaylandSurface::surfaceDestroyed, this, &QWindowCompositor::surfaceDestroyed);
@@ -319,11 +325,6 @@ void QWindowCompositor::adjustCursorSurface(QWaylandSurface *surface, int hotspo
m_cursorHotspotY = hotspotY;
}
-QWaylandSurface *QWindowCompositor::createDefaultSurfaceType()
-{
- return new Surface();
-}
-
QWaylandView *QWindowCompositor::viewAt(const QPointF &point, QPointF *local)
{
for (int i = m_visibleSurfaces.size() - 1; i >= 0; --i) {
diff --git a/examples/wayland/qwindow-compositor/qwindowcompositor.h b/examples/wayland/qwindow-compositor/qwindowcompositor.h
index 15ff30476..9e1eb0801 100644
--- a/examples/wayland/qwindow-compositor/qwindowcompositor.h
+++ b/examples/wayland/qwindow-compositor/qwindowcompositor.h
@@ -76,6 +76,7 @@ private slots:
void surfacePosChanged();
void render();
+ void onCreateSurface(QWaylandClient *client, uint id, int version);
void onSurfaceCreated(QWaylandSurface *surface);
void onCreateShellSurface(QWaylandSurface *s, QWaylandClient *client, uint id);
diff --git a/src/compositor/compositor_api/qwaylandcompositor.cpp b/src/compositor/compositor_api/qwaylandcompositor.cpp
index 0a2b28714..6ccc8ee09 100644
--- a/src/compositor/compositor_api/qwaylandcompositor.cpp
+++ b/src/compositor/compositor_api/qwaylandcompositor.cpp
@@ -260,7 +260,7 @@ void QWaylandCompositorPrivate::compositor_create_surface(Resource *resource, ui
if (surfResource) {
surface = QWaylandSurface::fromResource(surfResource);
} else {
- surface = q->createDefaultSurfaceType();
+ surface = createDefaultSurface();
surface->initialize(q, client, id, resource->version());
}
Q_ASSERT(surface);
@@ -273,6 +273,16 @@ void QWaylandCompositorPrivate::compositor_create_region(Resource *resource, uin
new QtWayland::Region(resource->client(), id);
}
+/*!
+ \internal
+ Used to create a fallback QWaylandSurface when no surface was
+ created by emitting the QWaylandCompositor::createSurface signal.
+*/
+QWaylandSurface *QWaylandCompositorPrivate::createDefaultSurface()
+{
+ return new QWaylandSurface();
+}
+
void QWaylandCompositorPrivate::initializeHardwareIntegration()
{
@@ -348,6 +358,11 @@ QWaylandCompositor::QWaylandCompositor(QObject *parent)
{
}
+QWaylandCompositor::QWaylandCompositor(QWaylandCompositorPrivate &dptr, QObject *parent)
+ : QObject(dptr, parent)
+{
+}
+
QWaylandCompositor::~QWaylandCompositor()
{
}
@@ -507,16 +522,6 @@ void QWaylandCompositor::processWaylandEvents()
}
-/*!
- \internal
- Used to create a fallback QWaylandSurface when no surface was
- created by emitting the QWaylandCompositor::createSurface signal.
-*/
-QWaylandSurface *QWaylandCompositor::createDefaultSurfaceType()
-{
- return new QWaylandSurface();
-}
-
QWaylandInputDevice *QWaylandCompositor::createInputDevice()
{
return new QWaylandInputDevice(this);
diff --git a/src/compositor/compositor_api/qwaylandcompositor.h b/src/compositor/compositor_api/qwaylandcompositor.h
index d859ab341..f986c6444 100644
--- a/src/compositor/compositor_api/qwaylandcompositor.h
+++ b/src/compositor/compositor_api/qwaylandcompositor.h
@@ -148,10 +148,7 @@ protected:
virtual QWaylandKeyboard *createKeyboardDevice(QWaylandInputDevice *inputDevice);
virtual QWaylandTouch *createTouchDevice(QWaylandInputDevice *inputDevice);
- QWaylandCompositor(QWaylandCompositorPrivate *dptr);
-
-private:
- virtual QWaylandSurface *createDefaultSurfaceType();
+ QWaylandCompositor(QWaylandCompositorPrivate &dptr, QObject *parent = 0);
};
QT_END_NAMESPACE
diff --git a/src/compositor/compositor_api/qwaylandcompositor_p.h b/src/compositor/compositor_api/qwaylandcompositor_p.h
index e6e3f584a..1975bd879 100644
--- a/src/compositor/compositor_api/qwaylandcompositor_p.h
+++ b/src/compositor/compositor_api/qwaylandcompositor_p.h
@@ -96,6 +96,7 @@ protected:
void compositor_create_surface(Resource *resource, uint32_t id) Q_DECL_OVERRIDE;
void compositor_create_region(Resource *resource, uint32_t id) Q_DECL_OVERRIDE;
+ virtual QWaylandSurface *createDefaultSurface();
protected:
void initializeHardwareIntegration();
void initializeExtensions();
diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
index 8ebd1b6f6..70afccb93 100644
--- a/src/compositor/compositor_api/qwaylandquickcompositor.cpp
+++ b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
@@ -43,11 +43,26 @@
#include "qwaylandquickoutput.h"
#include "qwaylandquickitem.h"
#include "qwaylandoutput.h"
+#include <QtCompositor/private/qwaylandcompositor_p.h>
QT_BEGIN_NAMESPACE
+class QWaylandQuickCompositorPrivate : public QWaylandCompositorPrivate
+{
+public:
+ QWaylandQuickCompositorPrivate(QWaylandCompositor *compositor)
+ : QWaylandCompositorPrivate(compositor)
+ {
+ }
+protected:
+ QWaylandSurface *createDefaultSurface() Q_DECL_OVERRIDE
+ {
+ return new QWaylandQuickSurface();
+ }
+};
+
QWaylandQuickCompositor::QWaylandQuickCompositor(QObject *parent)
- : QWaylandCompositor(parent)
+ : QWaylandCompositor(*new QWaylandQuickCompositorPrivate(this), parent)
{
}
@@ -57,11 +72,6 @@ void QWaylandQuickCompositor::create()
}
-QWaylandSurface *QWaylandQuickCompositor::createDefaultSurfaceType()
-{
- return new QWaylandQuickSurface();
-}
-
void QWaylandQuickCompositor::classBegin()
{
}
diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.h b/src/compositor/compositor_api/qwaylandquickcompositor.h
index 21778d2ce..eff0b2f3d 100644
--- a/src/compositor/compositor_api/qwaylandquickcompositor.h
+++ b/src/compositor/compositor_api/qwaylandquickcompositor.h
@@ -57,10 +57,6 @@ public:
protected:
void classBegin() Q_DECL_OVERRIDE;
void componentComplete() Q_DECL_OVERRIDE;
-
-private:
-
- QWaylandSurface *createDefaultSurfaceType() Q_DECL_OVERRIDE;
};
QT_END_NAMESPACE