summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/eglfs')
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp11
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.h3
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp17
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.h1
4 files changed, 20 insertions, 12 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
index ff06ac223b..a6d964dcb0 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -78,12 +78,9 @@ QT_BEGIN_NAMESPACE
static void *eglContextForContext(QOpenGLContext *context);
QEglFSIntegration::QEglFSIntegration()
- : mEventDispatcher(createUnixEventDispatcher()),
- mFontDb(new QGenericUnixFontDatabase),
- mServices(new QGenericUnixServices)
+ : mFontDb(new QGenericUnixFontDatabase)
+ , mServices(new QGenericUnixServices)
{
- QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher);
-
#if !defined(QT_NO_EVDEV) && (!defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK))
new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this);
new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
@@ -168,9 +165,9 @@ QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const
return mFontDb.data();
}
-QAbstractEventDispatcher *QEglFSIntegration::guiThreadEventDispatcher() const
+QAbstractEventDispatcher *QEglFSIntegration::createEventDispatcher() const
{
- return mEventDispatcher;
+ return createUnixEventDispatcher();
}
QVariant QEglFSIntegration::styleHint(QPlatformIntegration::StyleHint hint) const
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h
index c6265bb970..4e24e2f2f7 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.h
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.h
@@ -67,7 +67,7 @@ public:
QPlatformFontDatabase *fontDatabase() const;
QPlatformServices *services() const;
- QAbstractEventDispatcher *guiThreadEventDispatcher() const;
+ QAbstractEventDispatcher *createEventDispatcher() const;
QVariant styleHint(QPlatformIntegration::StyleHint hint) const;
@@ -87,7 +87,6 @@ public:
private:
EGLDisplay mDisplay;
- QAbstractEventDispatcher *mEventDispatcher;
QScopedPointer<QPlatformFontDatabase> mFontDb;
QScopedPointer<QPlatformServices> mServices;
QEglFSScreen *mScreen;
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
index ac2e7e72fb..17ab68f747 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -114,8 +114,9 @@ void QEglFSWindow::create()
}
window()->setSurfaceType(QSurface::OpenGLSurface);
- setGeometry(screen()->availableGeometry());
- QWindowSystemInterface::handleExposeEvent(window(), QRegion(screen()->availableGeometry()));
+ m_flags |= HasNativeWindow;
+ setGeometry(QRect()); // will become fullscreen
+ QWindowSystemInterface::handleExposeEvent(window(), geometry());
EGLDisplay display = static_cast<QEglFSScreen *>(screen())->display();
QSurfaceFormat platformFormat = QEglFSHooks::hooks()->surfaceFormatFor(window()->requestedFormat());
@@ -124,7 +125,6 @@ void QEglFSWindow::create()
resetSurface();
- m_flags |= HasNativeWindow;
if (screen()->primarySurface() == EGL_NO_SURFACE) {
screen()->setPrimarySurface(m_surface);
m_flags |= IsRasterRoot;
@@ -212,6 +212,17 @@ void QEglFSWindow::setGeometry(const QRect &r)
QWindowSystemInterface::handleGeometryChange(window(), rect);
}
+QRect QEglFSWindow::geometry() const
+{
+ // For yet-to-become-fullscreen windows report the geometry covering the entire
+ // screen. This is particularly important for Quick where the root object may get
+ // sized to some geometry queried before calling create().
+ if (!m_flags.testFlag(Created) && screen()->primarySurface() == EGL_NO_SURFACE)
+ return screen()->availableGeometry();
+
+ return QPlatformWindow::geometry();
+}
+
WId QEglFSWindow::winId() const
{
return m_wid;
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/qeglfswindow.h
index a5a25409b2..71c0ed5c27 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.h
+++ b/src/plugins/platforms/eglfs/qeglfswindow.h
@@ -58,6 +58,7 @@ public:
~QEglFSWindow();
void setGeometry(const QRect &);
+ QRect geometry() const;
WId winId() const;
void setVisible(bool visible);
void requestActivateWindow();