aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Sources
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-07-30 22:56:43 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-07-30 22:56:43 +0000
commit1557c715e461d5a7deb04bb008c6497441351bbe (patch)
tree8a378b20ca3bebab0b2eca1742c10dfd746cb2a1 /lib/python/Components/Sources
parentb8783e5b26a7dd0601bece623c4cbfe19f57977b (diff)
downloadenigma2-1557c715e461d5a7deb04bb008c6497441351bbe.tar.gz
enigma2-1557c715e461d5a7deb04bb008c6497441351bbe.zip
some minor speedups using caches and more selective updating
Diffstat (limited to 'lib/python/Components/Sources')
-rw-r--r--lib/python/Components/Sources/Boolean.py5
-rw-r--r--lib/python/Components/Sources/Clock.py5
-rw-r--r--lib/python/Components/Sources/CurrentService.py8
-rw-r--r--lib/python/Components/Sources/EventInfo.py25
-rw-r--r--lib/python/Components/Sources/FrontendStatus.py2
-rw-r--r--lib/python/Components/Sources/MenuList.py2
6 files changed, 34 insertions, 13 deletions
diff --git a/lib/python/Components/Sources/Boolean.py b/lib/python/Components/Sources/Boolean.py
index c25b4626..bd5222af 100644
--- a/lib/python/Components/Sources/Boolean.py
+++ b/lib/python/Components/Sources/Boolean.py
@@ -13,7 +13,7 @@ class Boolean(Source, object):
Source.__init__(self)
if poll > 0:
self.poll_timer = eTimer()
- self.poll_timer.timeout.get().append(self.changed)
+ self.poll_timer.timeout.get().append(self.poll)
self.poll_timer.start(poll)
def getBoolean(self):
@@ -23,3 +23,6 @@ class Boolean(Source, object):
return self.fixed
boolean = property(getBoolean)
+
+ def poll(self):
+ self.changed((self.CHANGED_ALL,))
diff --git a/lib/python/Components/Sources/Clock.py b/lib/python/Components/Sources/Clock.py
index 608a7190..e2d7faa7 100644
--- a/lib/python/Components/Sources/Clock.py
+++ b/lib/python/Components/Sources/Clock.py
@@ -8,10 +8,13 @@ class Clock(Source):
def __init__(self):
Source.__init__(self)
self.clock_timer = eTimer()
- self.clock_timer.timeout.get().append(self.changed)
+ self.clock_timer.timeout.get().append(self.poll)
self.clock_timer.start(1000)
def getClock(self):
return time.time()
time = property(getClock)
+
+ def poll(self):
+ self.changed((self.CHANGED_POLL,))
diff --git a/lib/python/Components/Sources/CurrentService.py b/lib/python/Components/Sources/CurrentService.py
index 100822bc..08d67eee 100644
--- a/lib/python/Components/Sources/CurrentService.py
+++ b/lib/python/Components/Sources/CurrentService.py
@@ -2,6 +2,8 @@ from Components.PerServiceDisplay import PerServiceBase
from enigma import iPlayableService
from Source import Source
+from time import time
+
class CurrentService(PerServiceBase, Source):
def __init__(self, navcore):
Source.__init__(self)
@@ -18,9 +20,11 @@ class CurrentService(PerServiceBase, Source):
self.navcore = navcore
def serviceEvent(self, event):
- self.changed(event)
+ self.changed((self.CHANGED_SPECIFIC, event))
def getCurrentService(self):
- return self.navcore.getCurrentService()
+ if self.cache is None:
+ self.cache = self.navcore.getCurrentService()
+ return self.cache
service = property(getCurrentService)
diff --git a/lib/python/Components/Sources/EventInfo.py b/lib/python/Components/Sources/EventInfo.py
index 40269993..20e5f104 100644
--- a/lib/python/Components/Sources/EventInfo.py
+++ b/lib/python/Components/Sources/EventInfo.py
@@ -3,6 +3,8 @@ from Tools.Event import Event
from enigma import iPlayableService
from Source import Source
+from time import time
+
class EventInfo(PerServiceBase, Source, object):
NOW = 0
NEXT = 1
@@ -11,16 +13,25 @@ class EventInfo(PerServiceBase, Source, object):
Source.__init__(self)
PerServiceBase.__init__(self, navcore,
{
- iPlayableService.evStart: self.changed,
- iPlayableService.evUpdatedEventInfo: self.changed,
- iPlayableService.evEnd: self.changed
- })
+ iPlayableService.evStart: self.gotEvent,
+ iPlayableService.evUpdatedEventInfo: self.gotEvent,
+ iPlayableService.evEnd: self.gotEvent
+ }, with_event=True)
self.now_or_next = now_or_next
def getEvent(self):
- service = self.navcore.getCurrentService()
- info = service and service.info()
- return info and info.getEvent(self.now_or_next)
+ if self.cache is None:
+ service = self.navcore.getCurrentService()
+ info = service and service.info()
+ self.cache = (True, info and info.getEvent(self.now_or_next)) # we always store a tuple for negative caching
+
+ return self.cache[1]
event = property(getEvent)
+
+ def gotEvent(self, what):
+ if what in [iPlayableService.evStart, iPlayableService.evEnd]:
+ self.changed((self.CHANGED_CLEAR,))
+ else:
+ self.changed((self.CHANGED_ALL,))
diff --git a/lib/python/Components/Sources/FrontendStatus.py b/lib/python/Components/Sources/FrontendStatus.py
index 6682e829..f1402f11 100644
--- a/lib/python/Components/Sources/FrontendStatus.py
+++ b/lib/python/Components/Sources/FrontendStatus.py
@@ -27,7 +27,7 @@ class FrontendStatus(Source):
iFrontendInformation.bitErrorRate,
iFrontendInformation.lockState] ]
- self.changed()
+ self.changed((self.CHANGED_ALL, ))
def getFrontendInfo(self):
if self.frontend_source:
diff --git a/lib/python/Components/Sources/MenuList.py b/lib/python/Components/Sources/MenuList.py
index 98764418..dd5e18f7 100644
--- a/lib/python/Components/Sources/MenuList.py
+++ b/lib/python/Components/Sources/MenuList.py
@@ -9,7 +9,7 @@ class MenuList(Source, object):
def setList(self, list):
self.__list = list
- self.changed()
+ self.changed((self.CHANGED_ALL,))
list = property(lambda self: self.__list, setList)