diff options
author | Jorgen Lind <jorgen.lind@digia.com> | 2013-11-21 13:43:23 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-27 15:32:43 +0100 |
commit | ab30cabb6383413ee3b2913615d75082c0c55686 (patch) | |
tree | 34ec3571f79dcb4e25f01467abe6c7516e9a10d2 /src/client/qwaylandintegration.cpp | |
parent | 543e34f643efd7fdd3126244a8a6b2596fb21da4 (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.cpp | 43 |
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 |