Handle EglDisplay and EglContext in the native interface of eglfs.

Change-Id: I793176204f12eea9d915fb7fe489bd3450a283cd
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
bb10
Samuel Rødal 2012-05-15 08:12:45 +02:00 committed by Qt by Nokia
parent ce2b46daea
commit 9487acb9d2
3 changed files with 39 additions and 1 deletions

View File

@ -47,6 +47,7 @@
#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
#include <qpa/qplatformwindow.h>
#include <QtGui/QSurfaceFormat>
@ -130,4 +131,34 @@ QVariant QEglFSIntegration::styleHint(QPlatformIntegration::StyleHint hint) cons
return QPlatformIntegration::styleHint(hint);
}
QPlatformNativeInterface *QEglFSIntegration::nativeInterface() const
{
return const_cast<QEglFSIntegration *>(this);
}
void *QEglFSIntegration::nativeResourceForIntegration(const QByteArray &resource)
{
QByteArray lowerCaseResource = resource.toLower();
if (lowerCaseResource == "egldisplay")
return static_cast<QEglFSScreen *>(mScreen)->display();
return 0;
}
void *QEglFSIntegration::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context)
{
QByteArray lowerCaseResource = resource.toLower();
QEGLPlatformContext *handle = static_cast<QEGLPlatformContext *>(context->handle());
if (!handle)
return 0;
if (lowerCaseResource == "eglcontext")
return handle->eglContext();
return 0;
}
QT_END_NAMESPACE

View File

@ -45,13 +45,14 @@
#include "qeglfsscreen.h"
#include <qpa/qplatformintegration.h>
#include <qpa/qplatformnativeinterface.h>
#include <qpa/qplatformscreen.h>
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;

View File

@ -68,6 +68,7 @@ public:
QPlatformOpenGLContext *platformContext() const;
EGLSurface surface() const { return m_surface; }
EGLDisplay display() const { return m_dpy; }
private:
void createAndSetPlatformContext() const;