Author: atagar Date: 2011-04-02 23:00:11 +0000 (Sat, 02 Apr 2011) New Revision: 24538
Modified: arm/trunk/src/interface/connections/connPanel.py Log: Freezing connection display when tor stops.
Modified: arm/trunk/src/interface/connections/connPanel.py =================================================================== --- arm/trunk/src/interface/connections/connPanel.py 2011-04-02 22:42:48 UTC (rev 24537) +++ arm/trunk/src/interface/connections/connPanel.py 2011-04-02 23:00:11 UTC (rev 24538) @@ -54,6 +54,7 @@ self._showDetails = False # presents the details panel if true
self._lastUpdate = -1 # time the content was last revised + self._isTorRunning = True # indicates if tor is currently running or not self._isPaused = True # prevents updates if true self._pauseTime = None # time when the panel was paused self._halt = False # terminates thread if true @@ -77,7 +78,27 @@ for entry in self._entries: if isinstance(entry, connEntry.ConnectionEntry): entry.getLines()[0].isInitialConnection = True + + # listens for when tor stops so we know to stop reflecting changes + torTools.getConn().addStatusListener(self.torStateListener)
+ def torStateListener(self, conn, eventType): + """ + Freezes the connection contents when Tor stops. + + Arguments: + conn - tor controller + eventType - type of event detected + """ + + self._isTorRunning = eventType == torTools.State.INIT + + if self._isPaused or not self._isTorRunning: + if not self._pauseTime: self._pauseTime = time.time() + else: self._pauseTime = None + + self.redraw(True) + def setPaused(self, isPause): """ If true, prevents the panel from updating. @@ -86,7 +107,8 @@ if not self._isPaused == isPause: self._isPaused = isPause
- if isPause: self._pauseTime = time.time() + if isPause or not self._isTorRunning: + if not self._pauseTime: self._pauseTime = time.time() else: self._pauseTime = None
# redraws so the display reflects any changes between the last update @@ -151,7 +173,7 @@ while not self._halt: currentTime = time.time()
- if self._isPaused or currentTime - lastDraw < self._config["features.connection.refreshRate"]: + if self._isPaused or not self._isTorRunning or currentTime - lastDraw < self._config["features.connection.refreshRate"]: self._cond.acquire() if not self._halt: self._cond.wait(0.2) self._cond.release()
tor-commits@lists.torproject.org