summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElvis Lee <kwangwoong.lee@lge.com>2012-07-19 15:54:23 +0900
committerQt by Nokia <qt-info@nokia.com>2012-07-20 09:13:00 +0200
commit6c0d267a73e5e79364131336cd936742c063e612 (patch)
tree05e1b32314a91e943df91e596d4527855e934bcd
parent0a8b67b3bbb9b03746e3ba2e80babbc1b43a55a1 (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>
-rw-r--r--src/plugins/platforms/kms/qkmsnativeinterface.cpp22
-rw-r--r--src/plugins/platforms/kms/qkmsnativeinterface.h3
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);