summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/qeglfswindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/eglfs/qeglfswindow.cpp')
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
index 39a3ef94e9..8a61bcf30d 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -75,9 +75,10 @@ void QEglFSWindow::create()
// raster windows will not have their own native window, surface and context. Instead,
// they will be composited onto the root window's surface.
QEglFSScreen *screen = this->screen();
+ QOpenGLCompositor *compositor = QOpenGLCompositor::instance();
if (screen->primarySurface() != EGL_NO_SURFACE) {
- if (isRaster() && screen->compositingWindow()) {
- m_format = screen->compositingWindow()->format();
+ if (isRaster() && compositor->targetWindow()) {
+ m_format = compositor->targetWindow()->format();
return;
}
@@ -95,7 +96,7 @@ void QEglFSWindow::create()
QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), geometry().size()));
EGLDisplay display = static_cast<QEglFSScreen *>(screen)->display();
- QSurfaceFormat platformFormat = QEglFSHooks::hooks()->surfaceFormatFor(window()->requestedFormat());
+ QSurfaceFormat platformFormat = qt_egl_device_integration()->surfaceFormatFor(window()->requestedFormat());
m_config = QEglFSIntegration::chooseConfig(display, platformFormat);
m_format = q_glFormatFromConfig(display, m_config, platformFormat);
@@ -109,8 +110,7 @@ void QEglFSWindow::create()
context->setScreen(window()->screen());
if (!context->create())
qFatal("EGLFS: Failed to create compositing context");
- screen->setRootContext(context);
- screen->setRootWindow(this);
+ compositor->setTarget(context, window());
}
}
@@ -118,7 +118,7 @@ void QEglFSWindow::destroy()
{
QEglFSScreen *screen = this->screen();
if (m_flags.testFlag(HasNativeWindow)) {
- QEGLPlatformCursor *cursor = static_cast<QEGLPlatformCursor *>(screen->cursor());
+ QEGLPlatformCursor *cursor = qobject_cast<QEGLPlatformCursor *>(screen->cursor());
if (cursor)
cursor->resetResources();
@@ -129,7 +129,7 @@ void QEglFSWindow::destroy()
}
m_flags = 0;
- screen->removeWindow(this);
+ QOpenGLCompositor::instance()->removeWindow(this);
}
// The virtual functions resetSurface and invalidateSurface may get overridden
@@ -143,14 +143,15 @@ void QEglFSWindow::invalidateSurface()
eglDestroySurface(display, m_surface);
m_surface = EGL_NO_SURFACE;
}
- QEglFSHooks::hooks()->destroyNativeWindow(m_window);
+ qt_egl_device_integration()->destroyNativeWindow(m_window);
m_window = 0;
}
void QEglFSWindow::resetSurface()
{
- EGLDisplay display = static_cast<QEglFSScreen *>(screen())->display();
- m_window = QEglFSHooks::hooks()->createNativeWindow(this, QEglFSHooks::hooks()->screenSize(), m_format);
+ QEglFSScreen *nativeScreen = static_cast<QEglFSScreen *>(screen());
+ EGLDisplay display = nativeScreen->display();
+ m_window = qt_egl_device_integration()->createNativeWindow(this, nativeScreen->geometry().size(), m_format);
m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL);
if (m_surface == EGL_NO_SURFACE) {
EGLint error = eglGetError();
@@ -161,17 +162,18 @@ void QEglFSWindow::resetSurface()
void QEglFSWindow::setVisible(bool visible)
{
- QList<QEGLPlatformWindow *> windows = screen()->windows();
+ QOpenGLCompositor *compositor = QOpenGLCompositor::instance();
+ QList<QOpenGLCompositorWindow *> windows = compositor->windows();
QWindow *wnd = window();
if (wnd->type() != Qt::Desktop) {
if (visible) {
- screen()->addWindow(this);
+ compositor->addWindow(this);
} else {
- screen()->removeWindow(this);
- windows = screen()->windows();
+ compositor->removeWindow(this);
+ windows = compositor->windows();
if (windows.size())
- windows.last()->requestActivateWindow();
+ windows.last()->sourceWindow()->requestActivate();
}
}
@@ -211,7 +213,7 @@ QRect QEglFSWindow::geometry() const
void QEglFSWindow::requestActivateWindow()
{
if (window()->type() != Qt::Desktop)
- screen()->moveToTop(this);
+ QOpenGLCompositor::instance()->moveToTop(this);
QWindow *wnd = window();
QWindowSystemInterface::handleWindowActivated(wnd);
@@ -222,20 +224,21 @@ void QEglFSWindow::raise()
{
QWindow *wnd = window();
if (wnd->type() != Qt::Desktop) {
- screen()->moveToTop(this);
+ QOpenGLCompositor::instance()->moveToTop(this);
QWindowSystemInterface::handleExposeEvent(wnd, QRect(QPoint(0, 0), wnd->geometry().size()));
}
}
void QEglFSWindow::lower()
{
- QList<QEGLPlatformWindow *> windows = screen()->windows();
+ QOpenGLCompositor *compositor = QOpenGLCompositor::instance();
+ QList<QOpenGLCompositorWindow *> windows = compositor->windows();
if (window()->type() != Qt::Desktop && windows.count() > 1) {
int idx = windows.indexOf(this);
if (idx > 0) {
- screen()->changeWindowIndex(this, idx - 1);
- QWindowSystemInterface::handleExposeEvent(windows.last()->window(),
- QRect(QPoint(0, 0), windows.last()->geometry().size()));
+ compositor->changeWindowIndex(this, idx - 1);
+ QWindowSystemInterface::handleExposeEvent(windows.last()->sourceWindow(),
+ QRect(QPoint(0, 0), windows.last()->sourceWindow()->geometry().size()));
}
}
}