[netinstall] Missing initialisations, split out slot
- m_queue was not initialized to nullptr, crashes - split queue-is-done to a separate slot rather than a lambda - prefer queueing calls to fetchNext(), for responsiveness
This commit is contained in:
parent
404a9ef98a
commit
03d086a233
@ -93,6 +93,17 @@ Config::loadGroupList( const QVariantList& groupData )
|
|||||||
emit statusReady();
|
emit statusReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::loadingDone()
|
||||||
|
{
|
||||||
|
if ( m_queue )
|
||||||
|
{
|
||||||
|
m_queue->deleteLater();
|
||||||
|
m_queue = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Config::setConfigurationMap( const QVariantMap& configurationMap )
|
Config::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
@ -133,11 +144,8 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
}
|
}
|
||||||
if ( m_queue )
|
if ( m_queue )
|
||||||
{
|
{
|
||||||
connect( m_queue, &LoaderQueue::done, [this]() {
|
connect( m_queue, &LoaderQueue::done, this, &Config::loadingDone );
|
||||||
m_queue->deleteLater();
|
QMetaObject::invokeMethod( m_queue, "fetchNext", Qt::QueuedConnection );
|
||||||
m_queue = nullptr;
|
|
||||||
} );
|
|
||||||
m_queue->fetchNext();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,12 +83,13 @@ Q_SIGNALS:
|
|||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void retranslate();
|
void retranslate();
|
||||||
|
void loadingDone();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CalamaresUtils::Locale::TranslatedString* m_sidebarLabel = nullptr; // As it appears in the sidebar
|
CalamaresUtils::Locale::TranslatedString* m_sidebarLabel = nullptr; // As it appears in the sidebar
|
||||||
CalamaresUtils::Locale::TranslatedString* m_titleLabel = nullptr;
|
CalamaresUtils::Locale::TranslatedString* m_titleLabel = nullptr;
|
||||||
PackageModel* m_model = nullptr;
|
PackageModel* m_model = nullptr;
|
||||||
LoaderQueue* m_queue;
|
LoaderQueue* m_queue = nullptr;
|
||||||
Status m_status = Status::Ok;
|
Status m_status = Status::Ok;
|
||||||
bool m_required = false;
|
bool m_required = false;
|
||||||
};
|
};
|
||||||
|
@ -95,6 +95,12 @@ LoaderQueue::fetch( const QUrl& url )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @brief Call fetchNext() on the queue if it can
|
||||||
|
*
|
||||||
|
* On destruction, a new call to fetchNext() is queued, so that
|
||||||
|
* the queue continues loading. Calling release() before the
|
||||||
|
* destructor skips the fetchNext(), ending the queue-loading.
|
||||||
|
*/
|
||||||
class FetchNextUnless
|
class FetchNextUnless
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user