From 9182e0ad76ebed5c9a45a6b62d333f26b6557d49 Mon Sep 17 00:00:00 2001 From: croneter Date: Fri, 13 Dec 2019 07:38:52 +0100 Subject: [PATCH] Fix PKC becoming unresponsive e.g. when switching the PMS --- resources/lib/app/application.py | 3 +++ resources/lib/backgroundthread.py | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/resources/lib/app/application.py b/resources/lib/app/application.py index 533a7594..5738913d 100644 --- a/resources/lib/app/application.py +++ b/resources/lib/app/application.py @@ -65,6 +65,7 @@ class App(object): self.threads.append(thread) def deregister_fanart_thread(self, thread): + self.fanart_thread.unblock_callers() self.fanart_thread = None self.threads.remove(thread) @@ -85,6 +86,7 @@ class App(object): self.threads.append(thread) def deregister_caching_thread(self, thread): + self.caching_thread.unblock_callers() self.caching_thread = None self.threads.remove(thread) @@ -111,6 +113,7 @@ class App(object): """ Sync thread has done it's work and is e.g. about to die """ + thread.unblock_callers() self.threads.remove(thread) def suspend_threads(self, block=True): diff --git a/resources/lib/backgroundthread.py b/resources/lib/backgroundthread.py index 60acc59e..e4eb44d7 100644 --- a/resources/lib/backgroundthread.py +++ b/resources/lib/backgroundthread.py @@ -106,6 +106,13 @@ class KillableThread(threading.Thread): """ return not self._is_not_asleep.is_set() + def unblock_callers(self): + """ + Ensures that any other thread that requested this thread's suspension + is released + """ + self._suspension_reached.set() + class ProcessingQueue(Queue.Queue, object): """