summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandintegration.cpp
diff options
context:
space:
mode:
authorJorgen Lind <jorgen.lind@digia.com>2013-11-21 13:43:23 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-27 15:32:43 +0100
commitab30cabb6383413ee3b2913615d75082c0c55686 (patch)
tree34ec3571f79dcb4e25f01467abe6c7516e9a10d2 /src/client/qwaylandintegration.cpp
parent543e34f643efd7fdd3126244a8a6b2596fb21da4 (diff)
Rename QWaylandGLIntegration to QWaylandClientBufferIntegration
also add a factory to load QWaylandClientBufferIntegrationPlugins Change-Id: Ia6a03627659b0452439ae664fceef21eaf0f6de0 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/client/qwaylandintegration.cpp')
-rw-r--r--src/client/qwaylandintegration.cpp43
1 files changed, 31 insertions, 12 deletions
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index af4c4f7d4..3c0c12e4f 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -65,9 +65,8 @@
#include <qpa/qplatformaccessibility.h>
#include <qpa/qplatforminputcontext.h>
-#ifdef QT_WAYLAND_GL_SUPPORT
-#include "qwaylandglintegration.h"
-#endif
+#include "qwaylandclientbufferintegration.h"
+#include "qwaylandclientbufferintegrationfactory.h"
QT_BEGIN_NAMESPACE
@@ -102,13 +101,15 @@ public:
};
QWaylandIntegration::QWaylandIntegration()
- : mFontDb(new QGenericUnixFontDatabase())
+ : mClientBufferIntegration(0)
+ , mFontDb(new QGenericUnixFontDatabase())
, mNativeInterface(new QWaylandNativeInterface(this))
#ifndef QT_NO_ACCESSIBILITY
, mAccessibility(new QPlatformAccessibility())
#else
, mAccessibility(0)
#endif
+ , mClientBufferIntegrationInitialized(false)
{
mDisplay = new QWaylandDisplay(this);
mClipboard = new QWaylandClipboard(mDisplay);
@@ -141,9 +142,9 @@ bool QWaylandIntegration::hasCapability(QPlatformIntegration::Capability cap) co
switch (cap) {
case ThreadedPixmaps: return true;
case OpenGL:
- return mDisplay->glIntegration();
+ return mDisplay->clientBufferIntegration();
case ThreadedOpenGL:
- return mDisplay->glIntegration() && mDisplay->glIntegration()->supportsThreadedOpenGL();
+ return mDisplay->clientBufferIntegration() && mDisplay->clientBufferIntegration()->supportsThreadedOpenGL();
case BufferQueueingOpenGL:
return true;
case MultipleWindows:
@@ -155,15 +156,15 @@ bool QWaylandIntegration::hasCapability(QPlatformIntegration::Capability cap) co
QPlatformWindow *QWaylandIntegration::createPlatformWindow(QWindow *window) const
{
- if (window->surfaceType() == QWindow::OpenGLSurface && mDisplay->glIntegration())
- return mDisplay->glIntegration()->createEglWindow(window);
+ if (window->surfaceType() == QWindow::OpenGLSurface && mDisplay->clientBufferIntegration())
+ return mDisplay->clientBufferIntegration()->createEglWindow(window);
return new QWaylandShmWindow(window);
}
QPlatformOpenGLContext *QWaylandIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
{
- if (mDisplay->glIntegration())
- return mDisplay->glIntegration()->createPlatformOpenGLContext(context->format(), context->shareHandle());
+ if (mDisplay->clientBufferIntegration())
+ return mDisplay->clientBufferIntegration()->createPlatformOpenGLContext(context->format(), context->shareHandle());
return 0;
}
@@ -236,9 +237,27 @@ QPlatformTheme *QWaylandIntegration::createPlatformTheme(const QString &name) co
return GenericWaylandTheme::createUnixTheme(name);
}
-QWaylandGLIntegration *QWaylandIntegration::glIntegration() const
+QWaylandClientBufferIntegration *QWaylandIntegration::clientBufferIntegration() const
{
- return 0;
+ if (!mClientBufferIntegrationInitialized)
+ const_cast<QWaylandIntegration *>(this)->initializeBufferIntegration();
+
+ return mClientBufferIntegration;
+}
+
+void QWaylandIntegration::initializeBufferIntegration()
+{
+ mClientBufferIntegrationInitialized = true;
+
+ QByteArray clientBufferIntegrationName = qgetenv("QT_WAYLAND_CLIENT_BUFFER_INTEGRATION");
+ if (clientBufferIntegrationName.isEmpty())
+ clientBufferIntegrationName = QByteArrayLiteral("wayland-egl");
+
+ QStringList keys = QWaylandClientBufferIntegrationFactory::keys();
+ QString targetKey = QString::fromLocal8Bit(clientBufferIntegrationName);
+ if (keys.contains(targetKey)) {
+ mClientBufferIntegration = QWaylandClientBufferIntegrationFactory::create(targetKey, QStringList());
+ }
}
QT_END_NAMESPACE