diff --git a/app/layout/genericlayout.cpp b/app/layout/genericlayout.cpp index 495709a60..0f314ebd1 100644 --- a/app/layout/genericlayout.cpp +++ b/app/layout/genericlayout.cpp @@ -67,23 +67,11 @@ void GenericLayout::unloadContainments() return; } - //!disconnect signals in order to avoid crashes when the layout is unloading - disconnect(this, &GenericLayout::viewsCountChanged, m_corona, &Plasma::Corona::availableScreenRectChanged); - disconnect(this, &GenericLayout::viewsCountChanged, m_corona, &Plasma::Corona::availableScreenRegionChanged); - disconnect(m_corona->activityConsumer(), &KActivities::Consumer::currentActivityChanged, this, &GenericLayout::updateLastUsedActivity); - - qDebug() << "Layout - " + name() + " unload: containments ... size ::: " << m_containments.size() + qDebug() << "Layout - " + name() + " : [unloadContainments]" + << "containments ::: " << m_containments.size() << " ,latteViews in memory ::: " << m_latteViews.size() << " ,hidden latteViews in memory ::: " << m_waitingLatteViews.size(); - for (const auto view : m_latteViews) { - view->disconnectSensitiveSignals(); - } - - for (const auto view : m_waitingLatteViews) { - view->disconnectSensitiveSignals(); - } - m_unloadedContainmentsIds.clear(); QList systrays; @@ -117,7 +105,23 @@ void GenericLayout::unloadLatteViews() return; } - qDebug() << "Layout - " + name() + " unload: latteViews ... size: " << m_latteViews.size(); + qDebug() << "Layout - " + name() + " : [unloadLatteViews]" + << "containments ::: " << m_containments.size() + << " ,latteViews in memory ::: " << m_latteViews.size() + << " ,hidden latteViews in memory ::: " << m_waitingLatteViews.size(); + + //!disconnect signals in order to avoid crashes when the layout is unloading + disconnect(this, &GenericLayout::viewsCountChanged, m_corona, &Plasma::Corona::availableScreenRectChanged); + disconnect(this, &GenericLayout::viewsCountChanged, m_corona, &Plasma::Corona::availableScreenRegionChanged); + disconnect(m_corona->activityConsumer(), &KActivities::Consumer::currentActivityChanged, this, &GenericLayout::updateLastUsedActivity); + + for (const auto view : m_latteViews) { + view->disconnectSensitiveSignals(); + } + + for (const auto view : m_waitingLatteViews) { + view->disconnectSensitiveSignals(); + } qDeleteAll(m_latteViews); qDeleteAll(m_waitingLatteViews); diff --git a/app/layouts/synchronizer.cpp b/app/layouts/synchronizer.cpp index 49ab242d4..d1084f508 100644 --- a/app/layouts/synchronizer.cpp +++ b/app/layouts/synchronizer.cpp @@ -515,8 +515,8 @@ void Synchronizer::unloadCentralLayout(CentralLayout *layout) central->syncToLayoutFile(true); } - central->unloadContainments(); central->unloadLatteViews(); + central->unloadContainments(); if (m_multipleModeInitialized) { m_manager->clearUnloadedContainmentsFromLinkedFile(central->unloadedContainmentsIds(), true); @@ -533,8 +533,8 @@ void Synchronizer::unloadSharedLayout(SharedLayout *layout) int pos = m_sharedLayouts.indexOf(layout); SharedLayout *shared = m_sharedLayouts.takeAt(pos); shared->syncToLayoutFile(true); - shared->unloadContainments(); shared->unloadLatteViews(); + shared->unloadContainments(); m_manager->clearUnloadedContainmentsFromLinkedFile(shared->unloadedContainmentsIds(), true); delete layout;