Merge branch 'master' of git://git.opendreambox.org/git/acidburn/enigma2-master
authorAndreas Oberritter <obi@saftware.de>
Wed, 19 Aug 2009 12:04:39 +0000 (14:04 +0200)
committerAndreas Oberritter <obi@saftware.de>
Wed, 19 Aug 2009 12:04:39 +0000 (14:04 +0200)
RecordTimer.py
timer.py

index 448a500..4242888 100644 (file)
@@ -190,6 +190,12 @@ class RecordTimerEntry(timer.TimerEntry, object):
                                        self.log(4, "failed to write meta information")
                                else:
                                        self.log(2, "'prepare' failed: error %d" % prep_res)
+
+                               # we must calc nur start time before stopRecordService call because in Screens/Standby.py TryQuitMainloop tries to get
+                               # the next start time in evEnd event handler...
+                               self.do_backoff()
+                               self.start_prepare = time.time() + self.backoff
+
                                NavigationInstance.instance.stopRecordService(self.record_service)
                                self.record_service = None
                                return False
@@ -232,10 +238,6 @@ class RecordTimerEntry(timer.TimerEntry, object):
                                        self.log(8, "currently running service is not a live service.. so stop it makes no sense")
                                else:
                                        self.log(8, "currently no service running... so we dont need to stop it")
-
-                       self.do_backoff()
-                       # retry
-                       self.start_prepare = time.time() + self.backoff
                        return False
                elif next_state == self.StateRunning:
                        # if this timer has been cancelled, just go to "end" state.
@@ -575,9 +577,11 @@ class RecordTimer(timer.Timer):
        def getNextRecordingTime(self):
                now = time.time()
                for timer in self.timer_list:
-                       if timer.justplay or timer.begin < now:
+                       print "timer", timer
+                       next_act = timer.getNextActivation()
+                       if timer.justplay or next_act < now:
                                continue
-                       return timer.begin
+                       return next_act
                return -1
 
        def isNextRecordAfterEventActionAuto(self):
index 64df9c8..35578ed 100644 (file)
--- a/timer.py
+++ b/timer.py
@@ -245,8 +245,6 @@ class Timer:
                self.addTimerEntry(timer)
        
        def doActivate(self, w):
-               self.timer_list.remove(w)
-               
                # when activating a timer which has already passed,
                # simply abort the timer. don't run trough all the stages.
                if w.shouldSkip():
@@ -258,6 +256,8 @@ class Timer:
                        if w.activate():
                                w.state += 1
 
+               self.timer_list.remove(w)
+
                # did this timer reached the last state?
                if w.state < TimerEntry.StateEnded:
                        # no, sort it into active list