diff --git a/CHANGES.md b/CHANGES.md index 873aace7..b6180aeb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,8 @@ [develop changelog] +* Fix Events shutdown (a manual start-up is required after updating to this fix) + ### 0.13.9 (2018-01-02 15:45:00 UTC) diff --git a/sickbeard/event_queue.py b/sickbeard/event_queue.py index fe246b3e..b5c6981c 100644 --- a/sickbeard/event_queue.py +++ b/sickbeard/event_queue.py @@ -2,44 +2,49 @@ from lib.six import moves import threading + class Event: - def __init__(self, type): - self._type = type + def __init__(self, etype): + self._type = etype @property def type(self): return self._type + class Events(threading.Thread): def __init__(self, callback): super(Events, self).__init__() self.queue = moves.queue.Queue() self.daemon = True self.callback = callback - self.name = "EVENT-QUEUE" - self.stop = threading.Event() + self.name = 'EVENT-QUEUE' + self._stop = threading.Event() - def put(self, type): - self.queue.put(type) + def put(self, etype): + self.queue.put(etype) + + def stop(self): + self._stop.set() def run(self): - while (not self.stop.is_set()): + while not self._stop.is_set(): try: # get event type - type = self.queue.get(True, 1) + etype = self.queue.get(True, 1) # perform callback if we got a event type - self.callback(type) + self.callback(etype) # event completed self.queue.task_done() except moves.queue.Empty: - type = None + pass # exiting thread - self.stop.clear() + self._stop.clear() # System Events class SystemEvent(Event): - RESTART = "RESTART" - SHUTDOWN = "SHUTDOWN" \ No newline at end of file + RESTART = 'RESTART' + SHUTDOWN = 'SHUTDOWN'