diff options
| author | Mikko Levonmaa <mikko.levonmaa@lge.com> | 2015-10-30 12:20:24 +0200 |
|---|---|---|
| committer | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2015-11-06 15:08:47 +0000 |
| commit | cf514c46a949ce99450f6d1f4470800f1183a225 (patch) | |
| tree | a863b0a200ea2278a922ecf24cc73c9e1c2643d3 /src/plugins/platforms/wayland/qwaylandnativeinterface.cpp | |
| parent | b8fc07100ba918bb2f0e5ff547ca3223a599e337 (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/plugins/platforms/wayland/qwaylandnativeinterface.cpp')
| -rw-r--r-- | src/plugins/platforms/wayland/qwaylandnativeinterface.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp b/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp index 0d20075f05d..050099f8b64 100644 --- a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp +++ b/src/plugins/platforms/wayland/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 |
