diff options
author | Jan Arne Petersen <jan.petersen@kdab.com> | 2013-07-07 14:44:38 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-06 15:52:52 +0200 |
commit | 47d27c3a535a32824f2bc80a37682712885ce5e8 (patch) | |
tree | 309793bbf4460d4fbc448beeae9a4fa7e375bf8f /src/plugins/platforms/eglfs | |
parent | 3a0071e286a929e4bf1fdf1c9701fc311f4b6044 (diff) |
eglfs: Implement nativeResourceFunctionForContext
Add support for a get_egl_context NativeResourceForContextFunction to
the eglfs platform plugin.
Change-Id: I155952797f340dd00ab9864852add4b44d841042
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/plugins/platforms/eglfs')
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfsintegration.cpp | 22 | ||||
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfsintegration.h | 2 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index cf1503b7f9..33427c45fa 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -74,6 +74,8 @@ QT_BEGIN_NAMESPACE +static void *eglContextForContext(QOpenGLContext *context); + QEglFSIntegration::QEglFSIntegration() : mEventDispatcher(createUnixEventDispatcher()), mFontDb(new QGenericUnixFontDatabase()) { @@ -215,6 +217,26 @@ void *QEglFSIntegration::nativeResourceForContext(const QByteArray &resource, QO return 0; } +QPlatformNativeInterface::NativeResourceForContextFunction QEglFSIntegration::nativeResourceFunctionForContext(const QByteArray &resource) +{ + QByteArray lowerCaseResource = resource.toLower(); + if (lowerCaseResource == "get_egl_context") + return NativeResourceForContextFunction(eglContextForContext); + + return 0; +} + +static void *eglContextForContext(QOpenGLContext *context) +{ + Q_ASSERT(context); + + QEGLPlatformContext *handle = static_cast<QEGLPlatformContext *>(context->handle()); + if (!handle) + return 0; + + return handle->eglContext(); +} + EGLConfig QEglFSIntegration::chooseConfig(EGLDisplay display, const QSurfaceFormat &format) { class Chooser : public QEglConfigChooser { diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index bf044d6919..c01b6db456 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -74,6 +74,8 @@ public: void *nativeResourceForIntegration(const QByteArray &resource); void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource) Q_DECL_OVERRIDE; + QPlatformScreen *screen() const { return mScreen; } static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format); |