diff options
author | Jorgen Lind <jorgen.lind@digia.com> | 2013-11-22 14:12:58 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-27 20:58:48 +0100 |
commit | 15f5eab1239d8269ea7f184bfd51deddd76900e2 (patch) | |
tree | a6ed6edd7c2000ed815b3b329f3cf09e0d72cd5a /src/client/qwaylandintegration.cpp | |
parent | cdf039711561643a5048cea0e49a833e8baeb7b0 (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.cpp | 32 |
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 |