summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h
diff options
context:
space:
mode:
authorLasse Holmstedt <lasse.holmstedt@nokia.com>2011-08-31 09:55:11 +0200
committerQt by Nokia <qt-info@nokia.com>2011-09-05 11:11:04 +0200
commit6fd75df2889c5635f3de265f40f9d23a35a94d00 (patch)
tree08c7fdef20be0feeb11b16c37200bd88cd70e4ce /src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h
parent74cf3bfc2c62ac30d16be68db1237a3dc55843a4 (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.h33
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