diff options
author | Elvis Lee <kwangwoong.lee@lge.com> | 2012-07-19 15:54:23 +0900 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-20 09:13:00 +0200 |
commit | 6c0d267a73e5e79364131336cd936742c063e612 (patch) | |
tree | 05e1b32314a91e943df91e596d4527855e934bcd /src/plugins | |
parent | 0a8b67b3bbb9b03746e3ba2e80babbc1b43a55a1 (diff) |
Implement nativeResourceFunctionForContext for kms
Change-Id: I4e0486744f4c3eb711a9252c90b0d06c5bb3c670
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/kms/qkmsnativeinterface.cpp | 22 | ||||
-rw-r--r-- | src/plugins/platforms/kms/qkmsnativeinterface.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/platforms/kms/qkmsnativeinterface.cpp b/src/plugins/platforms/kms/qkmsnativeinterface.cpp index b24e9d70e7..a192d1e87b 100644 --- a/src/plugins/platforms/kms/qkmsnativeinterface.cpp +++ b/src/plugins/platforms/kms/qkmsnativeinterface.cpp @@ -44,6 +44,8 @@ #include "qkmsdevice.h" #include "qscreen.h" +#include "qkmscontext.h" +#include <QOpenGLContext> class QKmsResourceMap : public QMap<QByteArray, QKmsNativeInterface::ResourceType> { @@ -76,6 +78,17 @@ void *QKmsNativeInterface::nativeResourceForWindow(const QByteArray &resourceStr return result; } +QPlatformNativeInterface::NativeResourceForContextFunction QKmsNativeInterface::nativeResourceFunctionForContext(const QByteArray &resource) +{ + QByteArray lowerCaseResource = resource.toLower(); + if (lowerCaseResource == "get_egl_context") { + return eglContextForContext; + } + return 0; +} + + + void *QKmsNativeInterface::eglDisplayForWindow(QWindow *window) { QKmsScreen *screen = qPlatformScreenForWindow(window); @@ -97,3 +110,12 @@ QKmsScreen *QKmsNativeInterface::qPlatformScreenForWindow(QWindow *window) QScreen *screen = window ? window->screen() : QGuiApplication::primaryScreen(); return static_cast<QKmsScreen *>(screen->handle()); } + +void *QKmsNativeInterface::eglContextForContext(QOpenGLContext *context) +{ + Q_ASSERT(context); + + QKmsContext *eglPlatformContext = static_cast<QKmsContext *>(context->handle()); + + return eglPlatformContext->eglContext(); +} diff --git a/src/plugins/platforms/kms/qkmsnativeinterface.h b/src/plugins/platforms/kms/qkmsnativeinterface.h index 20949becba..9141e4b770 100644 --- a/src/plugins/platforms/kms/qkmsnativeinterface.h +++ b/src/plugins/platforms/kms/qkmsnativeinterface.h @@ -56,8 +56,11 @@ public: void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window); + NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource); + void *eglDisplayForWindow(QWindow *window); void *eglContextForWindow(QWindow *window); + static void *eglContextForContext(QOpenGLContext *context); private: static QKmsScreen *qPlatformScreenForWindow(QWindow *window); |