diff options
author | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2011-08-31 09:55:11 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-05 11:11:04 +0200 |
commit | 6fd75df2889c5635f3de265f40f9d23a35a94d00 (patch) | |
tree | 08c7fdef20be0feeb11b16c37200bd88cd70e4ce /src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h | |
parent | 74cf3bfc2c62ac30d16be68db1237a3dc55843a4 (diff) |
Generic property support for platform windows
QPlatformNativeInterface can now contain generic window
properties in a QVariantMap, to facilitate communication
with the compositor and clients for certain platforms.
When window properties change, a signal is emitted from the
respective QPlatformNativeInterface instance. The properties
are intended to be read/writable from both client and server.
Change-Id: I7b42f7910d03c0d309add6c7dbb1c9b66ad22a3f
Reviewed-on: http://codereview.qt.nokia.com/3956
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h')
-rw-r--r-- | src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h index 6b4658c7e1..1372fb81b8 100644 --- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h +++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h @@ -42,21 +42,37 @@ #ifndef QWAYLANDWINDOWMANAGERINTEGRATION_H #define QWAYLANDWINDOWMANAGERINTEGRATION_H -#include <QObject> +#include <QtCore/QObject> +#include <QtCore/QScopedPointer> + #include "wayland-client.h" #include "qwaylanddisplay.h" -class QWaylandWindowManagerIntegration +class QWaylandWindow; + +class QWaylandWindowManagerIntegrationPrivate; + +class QWaylandWindowManagerIntegration : public QObject { + Q_OBJECT + Q_DECLARE_PRIVATE(QWaylandWindowManagerIntegration) public: explicit QWaylandWindowManagerIntegration(QWaylandDisplay *waylandDisplay); virtual ~QWaylandWindowManagerIntegration(); static QWaylandWindowManagerIntegration *createIntegration(QWaylandDisplay *waylandDisplay); struct wl_windowmanager *windowManager() const; + static QWaylandWindowManagerIntegration *instance(); + void mapSurfaceToProcess(struct wl_surface *surface, long long processId); void mapClientToProcess(long long processId); void authenticateWithToken(const QByteArray &token = QByteArray()); + void setWindowProperty(QWaylandWindow *window, const QString &propertyName, const QVariant &propertyValue); + + void flushPropertyChanges(QWaylandWindow *windowToFlush); + +private slots: + void removeQueuedPropertiesForWindow(); private: static void wlHandleListenerGlobal(wl_display *display, uint32_t id, @@ -64,12 +80,17 @@ private: static void wlHandleOnScreenVisibilityChange(void *data, struct wl_windowmanager *wl_windowmanager, int visible); static void wlHandleScreenOrientationChange(void *data, struct wl_windowmanager *wl_windowmanager, int screenOrientation); -private: + static void wlHandleWindowPropertyChange(void *data, struct wl_windowmanager *wl_windowmanager, + struct wl_surface *surface, + const char *propertyName, struct wl_array *propertyValue); - QWaylandDisplay *mWaylandDisplay; - struct wl_windowmanager *mWaylandWindowManager; + void handleWindowPropertyChange(QWaylandWindow *window, const QString &propertyName, const QVariant &propertyValue); + +private: + QScopedPointer<QWaylandWindowManagerIntegrationPrivate> d_ptr; + static QWaylandWindowManagerIntegration *m_instance; - static const struct wl_windowmanager_listener mWindowManagerListener; + static const struct wl_windowmanager_listener m_windowManagerListener; }; #endif // QWAYLANDWINDOWMANAGERINTEGRATION_H |