[tor-commits] [arm/release] Fix CPU-hogging by limiting liststore update rate.

atagar at torproject.org atagar at torproject.org
Sun Jul 17 06:08:28 UTC 2011


commit 872040aa5f084c54417375ac5016158c260a9b86
Author: Kamran Riaz Khan <krkhan at inspirated.com>
Date:   Sun Jun 26 06:03:40 2011 +0500

    Fix CPU-hogging by limiting liststore update rate.
---
 src/gui/logPanel.py |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/gui/logPanel.py b/src/gui/logPanel.py
index fc8e6b8..4e95db4 100644
--- a/src/gui/logPanel.py
+++ b/src/gui/logPanel.py
@@ -22,12 +22,15 @@ from cli.logPanel import (expandEvents, setEventListening, getLogFileEntries,
 RUNLEVEL_EVENT_COLOR = {log.DEBUG: "#C73043", log.INFO: "#762A2A", log.NOTICE: "#222222",
                         log.WARN: "#AB7814", log.ERR: "#EC131F"}
 STARTUP_EVENTS = 'A'
+REFRESH_RATE = 3
 
 class LogPanel:
   def __init__(self, builder):
     self.builder = builder
 
     self._config = dict(DEFAULT_CONFIG)
+    self._lastUpdate = 0
+
     self.lock = RLock()
     self.msgLog = deque()
     self.loggedEvents = setEventListening(expandEvents(STARTUP_EVENTS))
@@ -75,6 +78,9 @@ class LogPanel:
     liststore.set_sort_column_id(1, gtk.SORT_DESCENDING)
 
   def fill_log(self):
+    if time.time() - self._lastUpdate < REFRESH_RATE:
+      return
+
     liststore = self.builder.get_object('liststore_log')
     liststore.clear()
 
@@ -87,7 +93,7 @@ class LogPanel:
     finally:
       self.lock.release()
 
-    return True
+    self._lastUpdate = time.time()
 
   def register_event(self, event):
     self.lock.acquire()





More information about the tor-commits mailing list