From b7344af313397c00a80fc823ecfa46229eec1ff0 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Apr 2026 00:36:05 +0300 Subject: [PATCH] fix pack upgrade Signed-off-by: Trial97 --- launcher/InstanceList.cpp | 12 +++++------- launcher/ui/pages/instance/ManagedPackPage.cpp | 15 ++++++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index 1fe96144d..1339499c7 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -924,23 +924,23 @@ class InstanceStaging : public Task { connect(child, &Task::progress, this, &InstanceStaging::setProgress); connect(child, &Task::stepProgress, this, &InstanceStaging::propagateStepProgress); connect(&m_backoffTimer, &QTimer::timeout, this, &InstanceStaging::childSucceeded); - m_backoffTimer.setSingleShot(true); } - virtual ~InstanceStaging() {} + ~InstanceStaging() override = default; // FIXME/TODO: add ability to abort during instance commit retries bool abort() override { - if (!canAbort()) + if (!canAbort()) { return false; + } return m_child->abort(); } bool canAbort() const override { return (m_child && m_child->canAbort()); } protected: - virtual void executeTask() override + void executeTask() override { if (m_stagingPath.isNull()) { emitFailed(tr("Could not create staging folder")); @@ -954,10 +954,8 @@ class InstanceStaging : public Task { private slots: void childSucceeded() { - if (!isRunning()) - return; unsigned sleepTime = backoff(); - if (m_parent->commitStagedInstance(m_stagingPath, *m_child.get(), m_child->group(), *m_child.get())) { + if (m_parent->commitStagedInstance(m_stagingPath, *m_child, m_child->group(), *m_child)) { m_backoffTimer.stop(); emitSucceeded(); return; diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp index ad6b39723..508bfeba0 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.cpp +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -202,23 +202,24 @@ bool ManagedPackPage::runUpdateTask(InstanceTask* task) unique_qobject_ptr wrapped_task(APPLICATION->instances()->wrapInstanceTask(task)); - connect(task, &Task::failed, - [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); }); - connect(task, &Task::succeeded, [this, task]() { + connect(wrapped_task.get(), &Task::failed, + [this](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); }); + connect(wrapped_task.get(), &Task::succeeded, [this, task]() { QStringList warnings = task->warnings(); - if (warnings.count()) + if (warnings.count()) { CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + } }); - connect(task, &Task::aborted, [this] { + connect(wrapped_task.get(), &Task::aborted, [this] { CustomMessageBox::selectable(this, tr("Task aborted"), tr("The task has been aborted by the user."), QMessageBox::Information) ->show(); }); ProgressDialog loadDialog(this); loadDialog.setSkipButton(true, tr("Abort")); - loadDialog.execWithTask(task); + loadDialog.execWithTask(wrapped_task.get()); - return task->wasSuccessful(); + return wrapped_task->wasSuccessful(); } void ManagedPackPage::suggestVersion()