diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index 3908bb9a..a82bdfe8 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -6,6 +6,8 @@ InstanceCreationTask::InstanceCreationTask() = default; void InstanceCreationTask::executeTask() { + setAbortStatus(true); + if (updateInstance()) { emitSucceeded(); return; diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index bf25d2d0..a4b8d8aa 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -796,10 +796,12 @@ class InstanceStaging : public Task { // FIXME/TODO: add ability to abort during instance commit retries bool abort() override { - if (m_child && m_child->canAbort()) - return m_child->abort(); + if (!canAbort()) + return false; - return false; + m_child->abort(); + + return Task::abort(); } bool canAbort() const override { diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 22ee0998..5acb6300 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -30,6 +30,7 @@ bool FlameCreationTask::abort() if (!canAbort()) return false; + m_abort = true; if (m_process_update_file_info_job) m_process_update_file_info_job->abort(); if (m_files_job) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 449d7387..a0c67876 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -22,8 +22,9 @@ bool ModrinthCreationTask::abort() if (!canAbort()) return false; + m_abort = true; if (m_files_job) - return m_files_job->abort(); + m_files_job->abort(); return Task::abort(); }