Properly terminate thread

This commit is contained in:
AuroraWright
2025-06-16 17:02:44 +02:00
parent 2cb828d1da
commit 9b8981274e

View File

@@ -585,7 +585,9 @@ class ScreenshotThread(threading.Thread):
def run(self): def run(self):
if self.screencapture_mode != 2: if self.screencapture_mode != 2:
sct = mss.mss() sct = mss.mss()
while screenshot_event.wait() and not terminated: while not terminated:
if not screenshot_event.wait(timeout=0.1):
continue
if self.screencapture_mode == 2: if self.screencapture_mode == 2:
if sys.platform == 'darwin': if sys.platform == 'darwin':
with objc.autorelease_pool(): with objc.autorelease_pool():
@@ -854,6 +856,7 @@ def run():
global notifier global notifier
global auto_pause_handler global auto_pause_handler
global websocket_server_thread global websocket_server_thread
global screenshot_thread
global image_queue global image_queue
non_path_inputs = ('screencapture', 'clipboard', 'websocket', 'unixsocket') non_path_inputs = ('screencapture', 'clipboard', 'websocket', 'unixsocket')
read_from = config.get_general('read_from') read_from = config.get_general('read_from')
@@ -866,6 +869,7 @@ def run():
auto_pause = config.get_general('auto_pause') auto_pause = config.get_general('auto_pause')
clipboard_thread = None clipboard_thread = None
websocket_server_thread = None websocket_server_thread = None
screenshot_thread = None
directory_watcher_thread = None directory_watcher_thread = None
unix_socket_server = None unix_socket_server = None
key_combo_listener = None key_combo_listener = None
@@ -892,7 +896,6 @@ def run():
websocket_server_thread = WebsocketServerThread('websocket' in (read_from, read_from_secondary)) websocket_server_thread = WebsocketServerThread('websocket' in (read_from, read_from_secondary))
websocket_server_thread.start() websocket_server_thread.start()
if 'screencapture' in (read_from, read_from_secondary): if 'screencapture' in (read_from, read_from_secondary):
global screenshot_thread
global screenshot_event global screenshot_event
screen_capture_delay_secs = config.get_general('screen_capture_delay_secs') screen_capture_delay_secs = config.get_general('screen_capture_delay_secs')
screen_capture_combo = config.get_general('screen_capture_combo') screen_capture_combo = config.get_general('screen_capture_combo')
@@ -1007,5 +1010,7 @@ def run():
if unix_socket_server: if unix_socket_server:
unix_socket_server.shutdown() unix_socket_server.shutdown()
unix_socket_server_thread.join() unix_socket_server_thread.join()
if screenshot_thread:
screenshot_thread.join()
if key_combo_listener: if key_combo_listener:
key_combo_listener.stop() key_combo_listener.stop()