aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-01-27 15:22:28 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-01-27 15:36:21 +0100
commit547807d59d64f24305afbbfd071b71a691c64c18 (patch)
tree0b89cbe36f6ee6141b0518bed3836f1c30ebc41c /lib/python
parentc50a4697aa4a47d93f9ac7c3526758ff5a7ace26 (diff)
downloadenigma2-547807d59d64f24305afbbfd071b71a691c64c18.tar.gz
enigma2-547807d59d64f24305afbbfd071b71a691c64c18.zip
speedup closing the servicelist in some cases
this fixes bug #421
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Screens/ChannelSelection.py58
1 files changed, 31 insertions, 27 deletions
diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py
index 5fbfd591..8ac53867 100644
--- a/lib/python/Screens/ChannelSelection.py
+++ b/lib/python/Screens/ChannelSelection.py
@@ -31,7 +31,6 @@ from Screens.PictureInPicture import PictureInPicture
from Screens.RdsDisplay import RassInteractive
from ServiceReference import ServiceReference
from Tools.BoundFunction import boundFunction
-from re import compile
from os import remove
profile("ChannelSelection.py after imports")
@@ -713,6 +712,7 @@ class ChannelSelectionBase(Screen):
self.servicePathTV = [ ]
self.servicePathRadio = [ ]
self.servicePath = [ ]
+ self.rootChanged = False
self.mode = MODE_TV
@@ -819,6 +819,7 @@ class ChannelSelectionBase(Screen):
else:
self.servicelist.setMode(ServiceList.MODE_NORMAL)
self.servicelist.setRoot(root, justSet)
+ self.rootChanged = True
self.buildTitleString()
def removeModeStr(self, str):
@@ -1303,19 +1304,21 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
self.lastroot.save()
def restoreRoot(self):
- self.clearPath()
- re = compile('.+?;')
- tmp = re.findall(self.lastroot.value)
- cnt = 0
- for i in tmp:
- self.servicePath.append(eServiceReference(i[:-1]))
- cnt += 1
- if cnt:
- path = self.servicePath.pop()
- self.enterPath(path)
- else:
- self.showFavourites()
- self.saveRoot()
+ tmp = [x for x in self.lastroot.value.split(';') if x != '']
+ current = [x.toString() for x in self.servicePath]
+ if tmp != current or self.rootChanged:
+ self.clearPath()
+ cnt = 0
+ for i in tmp:
+ self.servicePath.append(eServiceReference(i))
+ cnt += 1
+ if cnt:
+ path = self.servicePath.pop()
+ self.enterPath(path)
+ else:
+ self.showFavourites()
+ self.saveRoot()
+ self.rootChanged = False
def preEnterPath(self, refstr):
if self.servicePath and self.servicePath[0] != eServiceReference(refstr):
@@ -1463,19 +1466,20 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
config.radio.lastroot.save()
def restoreRoot(self):
- self.clearPath()
- re = compile('.+?;')
- tmp = re.findall(config.radio.lastroot.value)
- cnt = 0
- for i in tmp:
- self.servicePathRadio.append(eServiceReference(i[:-1]))
- cnt += 1
- if cnt:
- path = self.servicePathRadio.pop()
- self.enterPath(path)
- else:
- self.showFavourites()
- self.saveRoot()
+ tmp = [x for x in self.lastroot.value.split(';') if x != '']
+ current = [x.toString() for x in self.servicePath]
+ if tmp != current or self.rootChanged:
+ cnt = 0
+ for i in tmp:
+ self.servicePathRadio.append(eServiceReference(i))
+ cnt += 1
+ if cnt:
+ path = self.servicePathRadio.pop()
+ self.enterPath(path)
+ else:
+ self.showFavourites()
+ self.saveRoot()
+ self.rootChanged = False
def preEnterPath(self, refstr):
if self.servicePathRadio and self.servicePathRadio[0] != eServiceReference(refstr):