From 0e621011fc7b3744d4cce5117e71ec55d7af8f15 Mon Sep 17 00:00:00 2001 From: yedpodtrzitko Date: Wed, 8 May 2024 11:10:43 +0800 Subject: [PATCH 1/2] dont run job threads needlessly --- tagstudio/src/qt/ts_qt.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index eabafdb5..f2dc760a 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -132,19 +132,20 @@ class NavigationState: class Consumer(QThread): + MARKER_QUIT = "MARKER_QUIT" + def __init__(self, queue) -> None: self.queue = queue QThread.__init__(self) def run(self): - self.active = True - while self.active: + while True: try: - job = self.queue.get(timeout=0.2) - # print('Running job...') - # logging.info(*job[1]) + job = self.queue.get() + if job == self.MARKER_QUIT: + break job[0](*job[1]) - except (Empty, RuntimeError): + except RuntimeError: pass def set_page_count(self, count: int): @@ -179,7 +180,7 @@ class QtDriver(QObject): # self.title_text: str = self.base_title # self.buffer = {} self.thumb_job_queue: Queue = Queue() - self.thumb_threads = [] + self.thumb_threads: list[Consumer] = [] self.thumb_cutoff: float = time.time() # self.selected: list[tuple[int,int]] = [] # (Thumb Index, Page Index) self.selected: list[tuple[ItemType, int]] = [] # (Item Type, Item ID) @@ -545,10 +546,9 @@ class QtDriver(QObject): self.settings.setValue("last_library", self.lib.library_dir) self.settings.sync() logging.info("[SHUTDOWN] Ending Thumbnail Threads...") - for thread in self.thumb_threads: - thread.active = False - thread.quit() - thread.wait() + for _ in self.thumb_threads: + self.thumb_job_queue.put(Consumer.MARKER_QUIT) + QApplication.quit() def save_library(self, show_status=True): From e803f6adcbdb69adaf3f81992d2b822c6878d354 Mon Sep 17 00:00:00 2001 From: yedpodtrzitko Date: Wed, 8 May 2024 22:47:47 +0800 Subject: [PATCH 2/2] wait for threads to finish --- tagstudio/src/qt/ts_qt.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tagstudio/src/qt/ts_qt.py b/tagstudio/src/qt/ts_qt.py index f2dc760a..fa5778b7 100644 --- a/tagstudio/src/qt/ts_qt.py +++ b/tagstudio/src/qt/ts_qt.py @@ -549,6 +549,11 @@ class QtDriver(QObject): for _ in self.thumb_threads: self.thumb_job_queue.put(Consumer.MARKER_QUIT) + # wait for threads to quit + for thread in self.thumb_threads: + thread.quit() + thread.wait() + QApplication.quit() def save_library(self, show_status=True):