summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland_common/qwaylanddisplay.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wayland_common/qwaylanddisplay.h')
-rw-r--r--src/plugins/platforms/wayland_common/qwaylanddisplay.h68
1 files changed, 24 insertions, 44 deletions
diff --git a/src/plugins/platforms/wayland_common/qwaylanddisplay.h b/src/plugins/platforms/wayland_common/qwaylanddisplay.h
index 40da74f1a..e0a6be159 100644
--- a/src/plugins/platforms/wayland_common/qwaylanddisplay.h
+++ b/src/plugins/platforms/wayland_common/qwaylanddisplay.h
@@ -48,6 +48,7 @@
#include <QtCore/QWaitCondition>
#include <wayland-client.h>
+#include <qwayland-wayland.h>
QT_BEGIN_NAMESPACE
@@ -60,22 +61,25 @@ class QWaylandScreen;
class QWaylandGLIntegration;
class QWaylandWindowManagerIntegration;
class QWaylandDataDeviceManager;
-class QWaylandShell;
-class QWaylandSurfaceExtension;
-class QWaylandSubSurfaceExtension;
-class QWaylandOutputExtension;
class QWaylandTouchExtension;
class QWaylandQtKeyExtension;
class QWaylandWindow;
class QWaylandEventThread;
+namespace QtWayland {
+ class wl_output_extension;
+ class wl_shell;
+ class wl_sub_surface_extension;
+ class wl_surface_extension;
+}
+
typedef void (*RegistryListener)(void *data,
struct wl_registry *registry,
uint32_t id,
- const char *interface,
+ const QString &interface,
uint32_t version);
-class QWaylandDisplay : public QObject {
+class QWaylandDisplay : public QObject, public QtWayland::wl_registry {
Q_OBJECT
public:
@@ -100,10 +104,12 @@ public:
struct wl_display *wl_display() const { return mDisplay; }
struct wl_event_queue *wl_event_queue() const { return mEventQueue; }
- struct wl_registry *wl_registry() const { return mRegistry; }
- struct wl_compositor *wl_compositor() const { return mCompositor; }
+ struct ::wl_registry *wl_registry() { return object(); }
+
+ const struct wl_compositor *wl_compositor() const { return mCompositor.object(); }
+ QtWayland::wl_compositor *compositor() { return &mCompositor; }
- QWaylandShell *shell() const { return mShell; }
+ QtWayland::wl_shell *shell() { return mShell; }
QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
@@ -112,9 +118,9 @@ public:
QWaylandDataDeviceManager *dndSelectionHandler() const { return mDndSelectionHandler; }
- QWaylandSurfaceExtension *windowExtension() const { return mWindowExtension; }
- QWaylandSubSurfaceExtension *subSurfaceExtension() const { return mSubSurfaceExtension; }
- QWaylandOutputExtension *outputExtension() const { return mOutputExtension; }
+ QtWayland::wl_surface_extension *windowExtension() const { return mWindowExtension; }
+ QtWayland::wl_sub_surface_extension *subSurfaceExtension() const { return mSubSurfaceExtension; }
+ QtWayland::wl_output_extension *outputExtension() const { return mOutputExtension; }
QWaylandTouchExtension *touchExtension() const { return mTouchExtension; }
/* wl_registry_add_listener does not add but rather sets a listener, so this function is used
@@ -130,15 +136,11 @@ public:
void scheduleRedraw(QWaylandWindow *window);
public slots:
- void createNewScreen(struct wl_output *output);
void blockingReadEvents();
void flushRequests();
private:
void waitForScreens();
- void displayHandleGlobal(uint32_t id,
- const QByteArray &interface,
- uint32_t version);
struct Listener {
RegistryListener listener;
@@ -147,20 +149,19 @@ private:
struct wl_display *mDisplay;
struct wl_event_queue *mEventQueue;
- struct wl_registry *mRegistry;
- struct wl_compositor *mCompositor;
+ QtWayland::wl_compositor mCompositor;
struct wl_shm *mShm;
QThread *mEventThread;
QWaylandEventThread *mEventThreadObject;
- QWaylandShell *mShell;
+ QtWayland::wl_shell *mShell;
QList<QPlatformScreen *> mScreens;
QList<QWaylandInputDevice *> mInputDevices;
QList<Listener> mRegistryListeners;
QWaylandInputDevice *mLastKeyboardFocusInputDevice;
QWaylandDataDeviceManager *mDndSelectionHandler;
- QWaylandSurfaceExtension *mWindowExtension;
- QWaylandSubSurfaceExtension *mSubSurfaceExtension;
- QWaylandOutputExtension *mOutputExtension;
+ QtWayland::wl_surface_extension *mWindowExtension;
+ QtWayland::wl_sub_surface_extension *mSubSurfaceExtension;
+ QtWayland::wl_output_extension *mOutputExtension;
QWaylandTouchExtension *mTouchExtension;
QWaylandQtKeyExtension *mQtKeyExtension;
@@ -169,28 +170,7 @@ private:
int mWritableNotificationFd;
bool mScreensInitialized;
- static const struct wl_registry_listener registryListener;
- static const struct wl_output_listener outputListener;
-
- static void displayHandleGlobal(void *data,
- struct wl_registry *registry,
- uint32_t id,
- const char *interface,
- uint32_t version);
- static void outputHandleGeometry(void *data,
- struct wl_output *output,
- int32_t x, int32_t y,
- int32_t width, int32_t height,
- int subpixel,
- const char *make,
- const char *model,
- int32_t transform);
- static void mode(void *data,
- struct wl_output *wl_output,
- uint32_t flags,
- int width,
- int height,
- int refresh);
+ void registry_global(uint32_t id, const QString &interface, uint32_t version) Q_DECL_OVERRIDE;
#ifdef QT_WAYLAND_GL_SUPPORT
QWaylandGLIntegration *mEglIntegration;