From 9487acb9d2dea07a89a82c1a723bd08c45133cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 15 May 2012 08:12:45 +0200 Subject: Handle EglDisplay and EglContext in the native interface of eglfs. Change-Id: I793176204f12eea9d915fb7fe489bd3450a283cd Reviewed-by: Girish Ramakrishnan --- src/plugins/platforms/eglfs/qeglfsintegration.cpp | 31 +++++++++++++++++++++++ src/plugins/platforms/eglfs/qeglfsintegration.h | 8 +++++- src/plugins/platforms/eglfs/qeglfsscreen.h | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index 257c3cd3dc..a62d3bdaed 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -47,6 +47,7 @@ #include #include +#include #include #include @@ -130,4 +131,34 @@ QVariant QEglFSIntegration::styleHint(QPlatformIntegration::StyleHint hint) cons return QPlatformIntegration::styleHint(hint); } +QPlatformNativeInterface *QEglFSIntegration::nativeInterface() const +{ + return const_cast(this); +} + +void *QEglFSIntegration::nativeResourceForIntegration(const QByteArray &resource) +{ + QByteArray lowerCaseResource = resource.toLower(); + + if (lowerCaseResource == "egldisplay") + return static_cast(mScreen)->display(); + + return 0; +} + +void *QEglFSIntegration::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) +{ + QByteArray lowerCaseResource = resource.toLower(); + + QEGLPlatformContext *handle = static_cast(context->handle()); + + if (!handle) + return 0; + + if (lowerCaseResource == "eglcontext") + return handle->eglContext(); + + return 0; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index b7cb715a9c..04d77a5903 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -45,13 +45,14 @@ #include "qeglfsscreen.h" #include +#include #include QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QEglFSIntegration : public QPlatformIntegration +class QEglFSIntegration : public QPlatformIntegration, public QPlatformNativeInterface { public: QEglFSIntegration(); @@ -62,6 +63,7 @@ public: QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; + QPlatformNativeInterface *nativeInterface() const; QPlatformFontDatabase *fontDatabase() const; @@ -69,6 +71,10 @@ public: QVariant styleHint(QPlatformIntegration::StyleHint hint) const; + // QPlatformNativeInterface + void *nativeResourceForIntegration(const QByteArray &resource); + void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + private: QPlatformFontDatabase *mFontDb; QPlatformScreen *mScreen; diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.h b/src/plugins/platforms/eglfs/qeglfsscreen.h index ca1a3ef91b..ba5db653ad 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.h +++ b/src/plugins/platforms/eglfs/qeglfsscreen.h @@ -68,6 +68,7 @@ public: QPlatformOpenGLContext *platformContext() const; EGLSurface surface() const { return m_surface; } + EGLDisplay display() const { return m_dpy; } private: void createAndSetPlatformContext() const; -- cgit v1.2.3