From 0876eb0e5443196d99446571df835709d31c0635 Mon Sep 17 00:00:00 2001 From: Cullen Ye Date: Wed, 3 Apr 2024 11:04:12 -0400 Subject: [PATCH] Fix issue #197: Ctrl+C interrupt no longer causes Traceback error when slideshow is cleared. --- pokemonterminal/slideshow.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pokemonterminal/slideshow.py b/pokemonterminal/slideshow.py index e0c295e..c4eb805 100644 --- a/pokemonterminal/slideshow.py +++ b/pokemonterminal/slideshow.py @@ -16,17 +16,20 @@ def __get_listener_thread(event): def __slideshow_worker(filtered, delay, changer_func, event_name): with PlatformNamedEvent(event_name) as e: - t = __get_listener_thread(e) - random.shuffle(filtered) - queque = iter(filtered) - while t.is_alive(): - next_pkmn = next(queque, None) - if next_pkmn is None: - random.shuffle(filtered) - queque = iter(filtered) - continue - changer_func(next_pkmn.get_path()) - t.join(delay * 60) + try: + t = __get_listener_thread(e) + random.shuffle(filtered) + queque = iter(filtered) + while t.is_alive(): + next_pkmn = next(queque, None) + if next_pkmn is None: + random.shuffle(filtered) + queque = iter(filtered) + continue + changer_func(next_pkmn.get_path()) + t.join(delay * 60) + except KeyboardInterrupt: + pass def start(filtered, delay, changer_func, event_name): p = multiprocessing.Process(target=__slideshow_worker, args=(filtered, delay, changer_func, event_name, ), daemon=True)