diff --git a/src/EMCMediaCenter.py b/src/EMCMediaCenter.py index 2516d85c..b63ddf70 100644 --- a/src/EMCMediaCenter.py +++ b/src/EMCMediaCenter.py @@ -330,14 +330,27 @@ def __onShow(self): if self.service and self.service.type != sidDVB: self.realSeekLength = self.getSeekLength() - def evEOF(self, needToClose=False): + def evEOF(self, needToClose=False, prevTitle=False): # see if there are more to play print "EMC PLAYER evEOF", self.playall, self.playcount, self.playlist if self.playall: # Play All try: - self.playcount = -1 - self.playlist = [ self.playall.next() ] + # for being able to jump back in 'playall' mode, new titles are added to the playlist acting like a cache + # (the generator 'getNextService' cannot easily be made bidirectional, using os.walk) + if prevTitle: + if self.playcount > 0: + self.playcount -= 2 + else: + self.playcount -= 1 + else: + if self.playcount == -1: + self.playall.next() + elif (self.playcount + 1) == len(self.playlist): + self.playlist.append(self.playall.next()) + if len(self.playlist) > 25: + del self.playlist[0] + self.playcount -= 1 except StopIteration: self.playall = None self.playlist = [] @@ -763,7 +776,7 @@ def nextTitle(self): # InfoBarSeek self.showAfterSeek() else: - if len(self.playlist) > 1: + if (len(self.playlist) > 1) or self.playall: self.evEOF(False) def prevTitle(self): @@ -773,7 +786,9 @@ def prevTitle(self): # InfoBarSeek self.showAfterSeek() else: - if len(self.playlist) > 1: + if self.playall: + self.evEOF(False,True) # True=previous + elif len(self.playlist) > 1: if self.playcount >= 1: self.playcount -= 2 self.evEOF(False)