summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandintegration.cpp
diff options
context:
space:
mode:
authorJorgen Lind <jorgen.lind@digia.com>2013-11-22 14:12:58 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-27 20:58:48 +0100
commit15f5eab1239d8269ea7f184bfd51deddd76900e2 (patch)
treea6ed6edd7c2000ed815b3b329f3cf09e0d72cd5a /src/client/qwaylandintegration.cpp
parentcdf039711561643a5048cea0e49a833e8baeb7b0 (diff)
Add serverbufferintegration to the qpa plugin
Change-Id: I3802ec2c2b69fa56d6a64962590ebaa7314b3eea Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/client/qwaylandintegration.cpp')
-rw-r--r--src/client/qwaylandintegration.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 32045bc86..70a09b2ed 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -68,6 +68,8 @@
#include "qwaylandclientbufferintegration.h"
#include "qwaylandclientbufferintegrationfactory.h"
+#include "qwaylandserverbufferintegration.h"
+#include "qwaylandserverbufferintegrationfactory.h"
QT_BEGIN_NAMESPACE
@@ -110,6 +112,7 @@ QWaylandIntegration::QWaylandIntegration()
, mAccessibility(0)
#endif
, mClientBufferIntegrationInitialized(false)
+ , mServerBufferIntegrationInitialized(false)
{
mDisplay = new QWaylandDisplay(this);
mClipboard = new QWaylandClipboard(mDisplay);
@@ -240,12 +243,20 @@ QPlatformTheme *QWaylandIntegration::createPlatformTheme(const QString &name) co
QWaylandClientBufferIntegration *QWaylandIntegration::clientBufferIntegration() const
{
if (!mClientBufferIntegrationInitialized)
- const_cast<QWaylandIntegration *>(this)->initializeBufferIntegration();
+ const_cast<QWaylandIntegration *>(this)->initializeClientBufferIntegration();
return mClientBufferIntegration;
}
-void QWaylandIntegration::initializeBufferIntegration()
+QWaylandServerBufferIntegration *QWaylandIntegration::serverBufferIntegration() const
+{
+ if (!mServerBufferIntegrationInitialized)
+ const_cast<QWaylandIntegration *>(this)->initializeServerBufferIntegration();
+
+ return mServerBufferIntegration;
+}
+
+void QWaylandIntegration::initializeClientBufferIntegration()
{
mClientBufferIntegrationInitialized = true;
@@ -262,4 +273,21 @@ void QWaylandIntegration::initializeBufferIntegration()
mClientBufferIntegration->initialize(mDisplay);
}
+void QWaylandIntegration::initializeServerBufferIntegration()
+{
+ mServerBufferIntegrationInitialized = true;
+
+ QByteArray serverBufferIntegrationName = qgetenv("QT_WAYLAND_SERVER_BUFFER_INTEGRATION");
+ if (serverBufferIntegrationName.isEmpty())
+ serverBufferIntegrationName = QByteArrayLiteral("wayland-egl");
+
+ QStringList keys = QWaylandServerBufferIntegrationFactory::keys();
+ QString targetKey = QString::fromLocal8Bit(serverBufferIntegrationName);
+ if (keys.contains(targetKey)) {
+ mServerBufferIntegration = QWaylandServerBufferIntegrationFactory::create(targetKey, QStringList());
+ }
+ if (mServerBufferIntegration)
+ mServerBufferIntegration->initialize(mDisplay);
+}
+
QT_END_NAMESPACE