diff --git a/app/gui.py b/app/gui.py index 93d374b..d93eb9b 100644 --- a/app/gui.py +++ b/app/gui.py @@ -1868,28 +1868,32 @@ class StorePage(QWidget): self.status.setText("Scanning local store…") worker = StoreScanWorker(self._store_dir) thread = QThread(self) + worker.gen = gen # used by _on_scan_results/_on_scan_failed via sender() worker.moveToThread(thread) thread.started.connect(worker.run) - worker.results.connect(lambda items, g=gen: self._on_scan_results(g, items)) - worker.failed.connect(lambda msg, g=gen: self._on_scan_failed(g, msg)) + worker.results.connect(self._on_scan_results) + worker.failed.connect(self._on_scan_failed) worker.finished.connect(thread.quit) - worker.finished.connect(lambda w=worker: self._on_worker_finished(w)) - thread.finished.connect(lambda t=thread: self._on_thread_finished(t)) + worker.finished.connect(self._on_worker_finished) + thread.finished.connect(self._on_thread_finished) self._threads.append(thread) self._workers.append(worker) thread.start() - def _on_thread_finished(self, thread): + def _on_thread_finished(self): + thread = self.sender() if thread in self._threads: self._threads.remove(thread) thread.deleteLater() - def _on_worker_finished(self, worker): + def _on_worker_finished(self): + worker = self.sender() if worker in self._workers: self._workers.remove(worker) worker.deleteLater() - def _on_scan_failed(self, gen, message): + def _on_scan_failed(self, message): + gen = getattr(self.sender(), "gen", self._scan_gen) if self._closing or gen != self._scan_gen: return self._items = [] @@ -1898,7 +1902,8 @@ class StorePage(QWidget): log.warning("store unavailable: %s", message) self.status.setText(f"Store unavailable: {message}") - def _on_scan_results(self, gen, items): + def _on_scan_results(self, items): + gen = getattr(self.sender(), "gen", self._scan_gen) if self._closing or gen != self._scan_gen: return self._items = items @@ -2131,7 +2136,7 @@ class StorePage(QWidget): thread.started.connect(loader.run) loader.loaded.connect(self._on_date_loaded) loader.finished.connect(thread.quit) - thread.finished.connect(lambda t=thread: self._on_thread_finished(t)) + thread.finished.connect(self._on_thread_finished) self._threads.append(thread) self._loaders.append(loader) thread.start() @@ -2154,7 +2159,7 @@ class StorePage(QWidget): thread.started.connect(loader.run) loader.loaded.connect(self._on_cover_loaded) loader.finished.connect(thread.quit) - thread.finished.connect(lambda t=thread: self._on_thread_finished(t)) + thread.finished.connect(self._on_thread_finished) self._threads.append(thread) self._loaders.append(loader) thread.start() @@ -2211,8 +2216,8 @@ class StorePage(QWidget): thread.started.connect(worker.run) worker.result.connect(self._on_store_meta) worker.finished.connect(thread.quit) - worker.finished.connect(lambda w=worker: self._on_worker_finished(w)) - thread.finished.connect(lambda t=thread: self._on_thread_finished(t)) + worker.finished.connect(self._on_worker_finished) + thread.finished.connect(self._on_thread_finished) self._threads.append(thread) self._workers.append(worker) thread.start()