From e9cbdb22bc4cffda5264f38ad37b137dfef554d5 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 16 Feb 2023 17:07:02 +0200 Subject: [PATCH] RareCore: add `dequeue_worker()` method to RareCore It will "properly" remove a worker and update the connected widgets. --- rare/components/main_window.py | 2 +- rare/shared/rare_core.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rare/components/main_window.py b/rare/components/main_window.py index 9ce559a9..cc8f3b15 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -251,7 +251,7 @@ class MainWindow(QMainWindow): if reply == QMessageBox.Yes: self.rcore.queue_threadpool.clear() for qw in self.rcore.queued_workers(): - self.rcore.queue_workers.remove(qw) + self.rcore.dequeue_worker(qw) self.update_statusbar() e.ignore() return diff --git a/rare/shared/rare_core.py b/rare/shared/rare_core.py index 73636332..94f98a2e 100644 --- a/rare/shared/rare_core.py +++ b/rare/shared/rare_core.py @@ -62,6 +62,12 @@ class RareCore(QObject): self.queue_threadpool.start(worker, priority=0) self.__signals.application.update_statusbar.emit() + def dequeue_worker(self, worker: QueueWorker): + rgame = self.__games[worker.worker_info().app_name] + rgame.set_worker(None) + self.queue_workers.remove(worker) + self.__signals.application.update_statusbar.emit() + def active_workers(self) -> Iterator[QueueWorker]: return list(filter(lambda w: w.state == QueueWorkerState.ACTIVE, self.queue_workers))