Fix memory leak of QOffscreenScreen in QOffscreenIntegration
Call handleScreenRemoved when the QOffscreenIntegration is getting destroyed. Fixes memory leaks such as this one: ``` $ memcheck --leak-check=full ./tst_qlabel -platform offscreen ... ==117791== 472 (88 direct, 384 indirect) bytes in 1 blocks are definitely lost in loss record 166 of 267 ==117791== at 0x483EF3F: operator new(unsigned long) (vg_replace_malloc.c:417) ==117791== by 0x48C0939: QOffscreenIntegration::configure(QList<QString> const&) (in /home/milian/projects/qt5/src/qtbase/build/plugins/platforms/libqoffscreen.so) ==117791== by 0x48C0B60: QOffscreenIntegration::createOffscreenIntegration(QList<QString> const&) (in /home/milian/projects/qt5/src/qtbase/build/plugins/platforms/libqoffscreen.so) ==117791== by 0x5381CB4: init_platform(QString const&, QString const&, QString const&, int&, char**) (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Gui.so.6.2.0) ==117791== by 0x5384E05: QGuiApplicationPrivate::createPlatformIntegration() (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Gui.so.6.2.0) ==117791== by 0x5385B1F: QGuiApplicationPrivate::createEventDispatcher() (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Gui.so.6.2.0) ==117791== by 0x5C67A76: QCoreApplicationPrivate::init() (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Core.so.6.2.0) ==117791== by 0x5387826: QGuiApplicationPrivate::init() (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Gui.so.6.2.0) ==117791== by 0x4C00368: QApplicationPrivate::init() (in /home/milian/projects/qt5/src/qtbase/build/lib/libQt6Widgets.so.6.2.0) ==117791== by 0x11D7D9: main (in /home/milian/projects/qt5/src/qtbase/build/tests/auto/widgets/widgets/qlabel/tst_qlabel) ==117791== ``` Pick-to: 6.2 Change-Id: Ibf4e6f4258514f85f23bb91b29008b837016edbc Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>bb10
parent
7c3198efc2
commit
e01a004a38
|
|
@ -113,6 +113,8 @@ QOffscreenIntegration::QOffscreenIntegration()
|
|||
|
||||
QOffscreenIntegration::~QOffscreenIntegration()
|
||||
{
|
||||
for (auto screen : std::as_const(m_screens))
|
||||
QWindowSystemInterface::handleScreenRemoved(screen);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue