From f2f3937fb228ba4be40ec9549a8cbc7e06b7f4d1 Mon Sep 17 00:00:00 2001 From: The Wobbler Date: Thu, 20 Feb 2025 19:17:44 +0100 Subject: [PATCH] Fixed a bug where the process widget of the playlist loading thread wouldn't get deleted if the playlist was too short. The bug occurred because the creation of the widget was done through a PyQt-Signal but the deletion occurred in the same thread as the background process. --- wobuzz/gui.py | 4 ++-- wobuzz/ui/process/process_dock.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/wobuzz/gui.py b/wobuzz/gui.py index 090dd78..4463b8a 100644 --- a/wobuzz/gui.py +++ b/wobuzz/gui.py @@ -59,6 +59,6 @@ class GUI: def on_background_job_start(self, job_name: str, description: str, steps: int=0, getter: any=None): self.process_dock.job_started_signal.emit(job_name, description, steps, getter) - def on_background_job_stop(self, job: str): - self.process_dock.on_background_job_stop(job) + def on_background_job_stop(self, job_name: str): + self.process_dock.job_finished_signal.emit(job_name) diff --git a/wobuzz/ui/process/process_dock.py b/wobuzz/ui/process/process_dock.py index 3d7c95b..becd170 100644 --- a/wobuzz/ui/process/process_dock.py +++ b/wobuzz/ui/process/process_dock.py @@ -13,6 +13,7 @@ class ProcessDock(QDockWidget): # we need a signal for self.on_background_job_start() because PyQt6 doesn't allow some operations to be performed # from a different thread job_started_signal = pyqtSignal(str, str, int, object) + job_finished_signal = pyqtSignal(str) def __init__(self, app, parent=None): super().__init__(parent) @@ -44,6 +45,7 @@ class ProcessDock(QDockWidget): self.progress_update_timer.start(PROGRESS_UPDATE_INTERVAL) self.job_started_signal.connect(self.on_background_job_start) + self.job_finished_signal.connect(self.on_background_job_stop) def add_process(self, name: str, process: BackgroundProcess): if not name in self.processes: