diff --git a/direct/src/distributed/ClientRepository.py b/direct/src/distributed/ClientRepository.py index cf29b90bd7..bd97ae1fdf 100644 --- a/direct/src/distributed/ClientRepository.py +++ b/direct/src/distributed/ClientRepository.py @@ -64,7 +64,49 @@ class ClientRepository(DirectObject.DirectObject): self.startReaderPollTask() return self.tcpConn + def startRawReaderPollTask(self): + # Stop any tasks we are running now + self.stopRawReaderPollTask() + self.stopReaderPollTask() + task = Task.Task(self.rawReaderPollUntilEmpty) + # Start with empty string + task.currentRawString = "" + taskMgr.spawnTaskNamed(task, "rawReaderPollTask") + return None + + def stopRawReaderPollTask(self): + taskMgr.removeTasksNamed("rawReaderPollTask") + return None + + def rawReaderPollUntilEmpty(self, task): + while self.rawReaderPollOnce(): + pass + return Task.cont + + def rawReaderPollOnce(self): + self.notify.debug("rawReaderPollOnce") + self.ensureValidConnection() + availGetVal = self.qcr.dataAvailable() + if availGetVal: + datagram = NetDatagram() + readRetVal = self.qcr.getData(datagram) + if readRetVal: + str = datagram.getMessage() + self.notify.debug("rawReaderPollOnce: found str: " + str) + self.handleRawString(str) + else: + ClientRepository.notify.warning("getData returned false") + return availGetVal + + def handleRawString(self, str): + # This method is meant to be pure virtual, and any classes that + # inherit from it need to make their own handleRawString method + pass + def startReaderPollTask(self): + # Stop any tasks we are running now + self.stopRawReaderPollTask() + self.stopReaderPollTask() task = Task.Task(self.readerPollUntilEmpty) taskMgr.spawnTaskNamed(task, "readerPollTask") return None diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index cad67502c2..b2c34a5c6e 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -244,6 +244,8 @@ class ShowBase: # temporary try..except for old pandas. try: self.win.closeWindow() + del self.win + del self.pipe except: pass