QT_BEGIN_NAMESPACE
QEglFSIntegration::QEglFSIntegration()
- : mEventDispatcher(createUnixEventDispatcher()), mFontDb(new QGenericUnixFontDatabase()), mScreen(new QEglFSScreen)
+ : mEventDispatcher(createUnixEventDispatcher()), mFontDb(new QGenericUnixFontDatabase())
{
QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher);
new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
new QEvdevTouchScreenHandlerThread(QString() /* spec */, this);
+ hooks->platformInit();
+
+ EGLint major, minor;
+
+ if (!eglBindAPI(EGL_OPENGL_ES_API)) {
+ qWarning("Could not bind GL_ES API\n");
+ qFatal("EGL error");
+ }
+
+ mDisplay = eglGetDisplay(hooks ? hooks->platformDisplay() : EGL_DEFAULT_DISPLAY);
+ if (mDisplay == EGL_NO_DISPLAY) {
+ qWarning("Could not open egl display\n");
+ qFatal("EGL error");
+ }
+ qWarning("Opened display %p\n", mDisplay);
+
+ if (!eglInitialize(mDisplay, &major, &minor)) {
+ qWarning("Could not initialize egl display\n");
+ qFatal("EGL error");
+ }
+
+ qWarning("Initialized display %d %d\n", major, minor);
+
+ int swapInterval = 1;
+ QByteArray swapIntervalString = qgetenv("QT_QPA_EGLFS_SWAPINTERVAL");
+ if (!swapIntervalString.isEmpty()) {
+ bool ok;
+ swapInterval = swapIntervalString.toInt(&ok);
+ if (!ok)
+ swapInterval = 1;
+ }
+ eglSwapInterval(mDisplay, swapInterval);
+
+ mScreen = new QEglFSScreen(mDisplay);
screenAdded(mScreen);
#ifdef QEGL_EXTRA_DEBUG
QEglFSIntegration::~QEglFSIntegration()
{
delete mScreen;
+
+ eglTerminate(mDisplay);
+ hooks->platformDestroy();
}
bool QEglFSIntegration::hasCapability(QPlatformIntegration::Capability cap) const
void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context);
private:
+ EGLDisplay mDisplay;
QAbstractEventDispatcher *mEventDispatcher;
QPlatformFontDatabase *mFontDb;
QPlatformScreen *mScreen;
}
};
-QEglFSScreen::QEglFSScreen()
- : m_depth(32)
+QEglFSScreen::QEglFSScreen(EGLDisplay dpy)
+ : m_dpy(dpy)
+ , m_depth(32)
, m_format(QImage::Format_Invalid)
, m_platformContext(0)
, m_surface(0)
qWarning("QEglScreen %p\n", this);
#endif
- hooks->platformInit();
-
- EGLint major, minor;
-
- if (!eglBindAPI(EGL_OPENGL_ES_API)) {
- qWarning("Could not bind GL_ES API\n");
- qFatal("EGL error");
- }
-
- m_dpy = eglGetDisplay(hooks ? hooks->platformDisplay() : EGL_DEFAULT_DISPLAY);
- if (m_dpy == EGL_NO_DISPLAY) {
- qWarning("Could not open egl display\n");
- qFatal("EGL error");
- }
- qWarning("Opened display %p\n", m_dpy);
-
- if (!eglInitialize(m_dpy, &major, &minor)) {
- qWarning("Could not initialize egl display\n");
- qFatal("EGL error");
- }
-
- qWarning("Initialized display %d %d\n", major, minor);
-
- int swapInterval = 1;
- QByteArray swapIntervalString = qgetenv("QT_QPA_EGLFS_SWAPINTERVAL");
- if (!swapIntervalString.isEmpty()) {
- bool ok;
- swapInterval = swapIntervalString.toInt(&ok);
- if (!ok)
- swapInterval = 1;
- }
- eglSwapInterval(m_dpy, swapInterval);
-
static int hideCursor = qgetenv("QT_QPA_EGLFS_HIDECURSOR").toInt();
if (!hideCursor) {
if (QEglFSCursor *customCursor = hooks->createCursor(this))
eglDestroySurface(m_dpy, m_surface);
hooks->destroyNativeWindow(m_window);
-
- eglTerminate(m_dpy);
-
- hooks->platformDestroy();
}
void QEglFSScreen::createAndSetPlatformContext() const {
class QEglFSScreen : public QPlatformScreen //huh: FullScreenScreen ;) just to follow namespace
{
public:
- QEglFSScreen();
+ QEglFSScreen(EGLDisplay display);
~QEglFSScreen();
QRect geometry() const;
void createAndSetPlatformContext() const;
void createAndSetPlatformContext();
+ EGLDisplay m_dpy;
QRect m_geometry;
int m_depth;
QImage::Format m_format;
QPlatformOpenGLContext *m_platformContext;
- EGLDisplay m_dpy;
EGLSurface m_surface;
EGLNativeWindowType m_window;
QEglFSCursor *m_cursor;