diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -24,9 +24,10 @@ class Core: self._cache=FrameCache() self.states=StateBag() - self._ownMessages=MsgQueue(self._handleEvent) - self._guiMessages=MsgQueue() - self._vidMessages=MsgQueue() + self._ownMessages=MsgQueue("Core",self._handleEvent) + self._guiMessages=MsgQueue("GUI") + self._vidMessages=MsgQueue("Video") + self._listenerThread=None self._frame=None @@ -73,14 +74,16 @@ class Core: log.info("illegal position detected") def listen(self): - listenerThread=threading.Thread(target=lambda: self._ownMessages.listen()) - listenerThread.start() + self._listenerThread=threading.Thread(target=lambda: self._ownMessages.listen()) + self._listenerThread.start() def joinChildren(self): self._guiProc.join() self._vidMessages.send("shutDown") self._vidProc.join() self._ownMessages.send("!kill",("core",)) + self._listenerThread.join() + log.info("Core exiting.") def _handleEvent(self,e): actions={ @@ -98,31 +101,4 @@ if __name__=="__main__": core.listen() log.info("OneEye started.") core.joinChildren() - log.info("Exited correctly.") - -""" -core -==== -grid -go -imageAnalyzer - - -gui -=== -corners - -a) keeps references to important objects and uses them -b) gets and sets all relevant data through method calls with core - -GUI -<- addCorner(corner) --> redrawImgView(img,grid) -<- refreshTresholds(tresB,tresW) - -BoardView --> redrawState(go) - - -core-gui: just pass messages with relevant data (!! always pass object copies, don't share instances) -""" \ No newline at end of file + log.info("OneEye done.")