diff --git a/app/gui.py b/app/gui.py index 2ae9c0f..da812a1 100644 --- a/app/gui.py +++ b/app/gui.py @@ -463,7 +463,9 @@ class CoverShowcase(QWidget): self.loader.loaded.connect(self._on_loaded) self.loader.failed.connect(self._on_failed) self.loader.finished.connect(self._on_loading_done) + self.loader.finished.connect(self._on_loader_finished) self.loader.finished.connect(self.thread.quit) + self.thread.finished.connect(self._on_thread_finished) self._threads.append(self.thread) self._loaders.append(self.loader) self.thread.start() @@ -521,6 +523,26 @@ class CoverShowcase(QWidget): self._loading = False self._update_status() + def _on_loader_finished(self): + """Drop a finished cover loader from tracking and schedule its deletion.""" + loader = self.sender() + if loader is None: + return + if loader in self._loaders: + self._loaders.remove(loader) + if self.loader is loader: + self.loader = None + loader.deleteLater() + + def _on_thread_finished(self): + """Delete a finished cover-loader thread.""" + thread = self.sender() + if thread in self._threads: + self._threads.remove(thread) + if self.thread is thread: + self.thread = None + thread.deleteLater() + def _update_status(self): if self._closing: return @@ -4790,6 +4812,8 @@ class MainWindow(QMainWindow): thread.started.connect(worker.run) worker.result.connect(self._on_library_loaded) worker.finished.connect(thread.quit) + worker.finished.connect(worker.deleteLater) + thread.finished.connect(thread.deleteLater) thread.finished.connect(lambda t=thread, w=worker: self._forget_library_thread(t, w)) self._library_threads.append(thread) self._library_workers.append(worker)