Fix Events shutdown (a manual start-up is required after updating to this fix).

This commit is contained in:
Prinz23 2018-01-04 15:05:16 +00:00 committed by JackDandy
parent 149ea890c6
commit 9f04beeabb
2 changed files with 20 additions and 13 deletions

View file

@ -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)

View file

@ -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"
RESTART = 'RESTART'
SHUTDOWN = 'SHUTDOWN'