summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandnativeinterface.cpp
diff options
context:
space:
mode:
authorMikko Levonmaa <mikko.levonmaa@lge.com>2015-10-30 12:20:24 +0200
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2015-11-06 15:08:47 +0000
commit2eff05fe14c910c8b2cade8674e49404c6843e74 (patch)
treed076bb844ea82b7c224a5d9c39d5dd8834095149 /src/client/qwaylandnativeinterface.cpp
parent6e46086974b05d3ed71470cf31916c4b7ffd11bc (diff)
Add QWaylandWindowFunctions
Allow the control of the subsurface sync mode Change-Id: I19f35261313282873f57228487a63a8f6a780b0c Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Diffstat (limited to 'src/client/qwaylandnativeinterface.cpp')
-rw-r--r--src/client/qwaylandnativeinterface.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/client/qwaylandnativeinterface.cpp b/src/client/qwaylandnativeinterface.cpp
index 0d20075f0..050099f8b 100644
--- a/src/client/qwaylandnativeinterface.cpp
+++ b/src/client/qwaylandnativeinterface.cpp
@@ -34,6 +34,7 @@
#include "qwaylandnativeinterface_p.h"
#include "qwaylanddisplay_p.h"
#include "qwaylandwindow_p.h"
+#include "qwaylandsubsurface_p.h"
#include "qwaylandextendedsurface_p.h"
#include "qwaylandintegration_p.h"
#include "qwaylanddisplay_p.h"
@@ -43,6 +44,8 @@
#include <QtGui/QScreen>
#include <QtWaylandClient/private/qwaylandclientbufferintegration_p.h>
+#include <QtPlatformHeaders/qwaylandwindowfunctions.h>
+
QT_BEGIN_NAMESPACE
namespace QtWaylandClient {
@@ -141,6 +144,44 @@ void QWaylandNativeInterface::emitWindowPropertyChanged(QPlatformWindow *window,
emit windowPropertyChanged(window,name);
}
+QFunctionPointer QWaylandNativeInterface::platformFunction(const QByteArray &resource) const
+{
+ if (resource == QWaylandWindowFunctions::setSyncIdentifier()) {
+ return QFunctionPointer(setSync);
+ } else if (resource == QWaylandWindowFunctions::setDeSyncIdentifier()) {
+ return QFunctionPointer(setDeSync);
+ } else if (resource == QWaylandWindowFunctions::isSyncIdentifier()) {
+ return QFunctionPointer(isSync);
+ }
+ return 0;
+}
+
+
+void QWaylandNativeInterface::setSync(QWindow *window)
+{
+ QWaylandWindow *ww = static_cast<QWaylandWindow*>(window->handle());
+ if (ww->subSurfaceWindow()) {
+ ww->subSurfaceWindow()->setSync();
+ }
+}
+
+void QWaylandNativeInterface::setDeSync(QWindow *window)
+{
+ QWaylandWindow *ww = static_cast<QWaylandWindow*>(window->handle());
+ if (ww->subSurfaceWindow()) {
+ ww->subSurfaceWindow()->setDeSync();
+ }
+}
+
+bool QWaylandNativeInterface::isSync(QWindow *window)
+{
+ QWaylandWindow *ww = static_cast<QWaylandWindow*>(window->handle());
+ if (ww->subSurfaceWindow()) {
+ return ww->subSurfaceWindow()->isSync();
+ }
+ return false;
+}
+
}
QT_END_NAMESPACE