aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-12-15 13:45:50 -0300
committerflow <flowlnlnln@gmail.com>2022-12-15 13:45:50 -0300
commitdd578354c448dbb92b12438886d80ac6c0c0bea7 (patch)
treeceb87046d859456d8e0558c035eaf6b6499af010
parent4f1ea712da46e34a6a1bd75ac68b080bac786462 (diff)
downloadPrismLauncher-dd578354c448dbb92b12438886d80ac6c0c0bea7.tar.gz
PrismLauncher-dd578354c448dbb92b12438886d80ac6c0c0bea7.tar.bz2
PrismLauncher-dd578354c448dbb92b12438886d80ac6c0c0bea7.zip
feat(Tasks): add ConcurrentTask::clear to allow re-using tasks
This way old runs won't pile up in the internal DSs Signed-off-by: flow <flowlnlnln@gmail.com>
-rw-r--r--launcher/tasks/ConcurrentTask.cpp16
-rw-r--r--launcher/tasks/ConcurrentTask.h5
2 files changed, 21 insertions, 0 deletions
diff --git a/launcher/tasks/ConcurrentTask.cpp b/launcher/tasks/ConcurrentTask.cpp
index ce08a6a2..bc3cf4d3 100644
--- a/launcher/tasks/ConcurrentTask.cpp
+++ b/launcher/tasks/ConcurrentTask.cpp
@@ -73,6 +73,22 @@ bool ConcurrentTask::abort()
return suceedeed;
}
+void ConcurrentTask::clear()
+{
+ Q_ASSERT(!isRunning());
+
+ m_done.clear();
+ m_failed.clear();
+ m_queue.clear();
+
+ m_aborted = false;
+
+ m_progress = 0;
+ m_stepProgress = 0;
+
+ m_total_size = 0;
+}
+
void ConcurrentTask::startNext()
{
if (m_aborted || m_doing.count() > m_total_max_size)
diff --git a/launcher/tasks/ConcurrentTask.h b/launcher/tasks/ConcurrentTask.h
index f1279d32..30b2ae4d 100644
--- a/launcher/tasks/ConcurrentTask.h
+++ b/launcher/tasks/ConcurrentTask.h
@@ -24,6 +24,11 @@ public:
public slots:
bool abort() override;
+ /** Resets the internal state of the task.
+ * This allows the same task to be re-used.
+ */
+ void clear();
+
protected
slots:
void executeTask() override;