From 3919fc4938d5cc5454df46ab9706f47cd6817a32 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 10 May 2020 11:16:39 +0200 Subject: [PATCH] since Qt 5.12 topLevel children are removed in ~QQuickWindow and we don't need to do this in ~QskWindow anymore --- src/controls/QskWindow.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/controls/QskWindow.cpp b/src/controls/QskWindow.cpp index 3da1f362..ddf6fa21 100644 --- a/src/controls/QskWindow.cpp +++ b/src/controls/QskWindow.cpp @@ -195,28 +195,25 @@ QskWindow::QskWindow( QWindow* parent ) QskWindow::QskWindow( QQuickRenderControl* renderControl, QWindow* parent ) : QskWindow( parent ) { - auto* d = static_cast< QskWindowPrivate* >( QQuickWindowPrivate::get( this ) ); + Q_D( QskWindow ); + d->renderControl = renderControl; d->init( this, renderControl ); } QskWindow::~QskWindow() { +#if QT_VERSION < QT_VERSION_CHECK( 5, 12, 0 ) // When being used from Qml the item destruction would run in the most // unefficient way, leading to lots of QQuickItem::ItemChildRemovedChange - // depending operations. So let's remove the toplevel children manually. + // depending operations. - QVector< QPointer< QQuickItem > > items; + Q_D( QskWindow ); - const auto children = contentItem()->childItems(); - for ( auto child : children ) - { - if ( child->parent() == contentItem() ) - items += child; - } - - for ( auto& item : qskAsConst( items ) ) - delete item; + auto contentItem = d->contentItem; + d->contentItem = nullptr; + delete contentItem; +#endif } void QskWindow::setScreen( const QString& name )