diff --git a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp index a2e1ac38323..69a5f67ea96 100644 --- a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp @@ -40,9 +40,11 @@ ****************************************************************************/ #include "qeglfsdeviceintegration.h" +#include "qeglfsintegration.h" #include #include #include +#include #include #include #include @@ -185,8 +187,11 @@ void QEGLDeviceIntegration::screenInit() void QEGLDeviceIntegration::screenDestroy() { - while (!qApp->screens().isEmpty()) - delete qApp->screens().last()->handle(); + QGuiApplication *app = qGuiApp; + QEglFSIntegration *platformIntegration = static_cast( + QGuiApplicationPrivate::platformIntegration()); + while (!app->screens().isEmpty()) + platformIntegration->removeScreen(app->screens().last()->handle()); } QSizeF QEGLDeviceIntegration::physicalScreenSize() const diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index 8cb23f2c09b..80a029c27ff 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -82,6 +82,11 @@ void QEglFSIntegration::addScreen(QPlatformScreen *screen) screenAdded(screen); } +void QEglFSIntegration::removeScreen(QPlatformScreen *screen) +{ + destroyScreen(screen); +} + void QEglFSIntegration::initialize() { qt_egl_device_integration()->platformInit(); diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index b75dc240bbb..2074d80e564 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -47,6 +47,7 @@ public: QEglFSIntegration(); void addScreen(QPlatformScreen *screen); + void removeScreen(QPlatformScreen *screen); void initialize() Q_DECL_OVERRIDE; void destroy() Q_DECL_OVERRIDE;