X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=RecordTimer.py;h=304a528404bea4666da797d46acea86c721a7da1;hp=09156e460f736d28890157f84de99dafcae08687;hb=9330a6e050bad23c25469545e605c017f73f121b;hpb=5e9b74157d81f7bfd0ae5315ae1ddbc849e97a5b;ds=sidebyside diff --git a/RecordTimer.py b/RecordTimer.py index 09156e4..304a528 100644 --- a/RecordTimer.py +++ b/RecordTimer.py @@ -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 @@ -207,7 +213,7 @@ class RecordTimerEntry(timer.TimerEntry, object): def activate(self): next_state = self.state + 1 self.log(5, "activating state %d" % next_state) - + if next_state == self.StatePrepared: if self.tryPrepare(): self.log(6, "prepare ok, waiting for begin") @@ -215,21 +221,23 @@ class RecordTimerEntry(timer.TimerEntry, object): self.next_activation = self.begin self.backoff = 0 return True - + self.log(7, "prepare failed") if self.first_try_prepare: self.first_try_prepare = False - if not config.recording.asktozap.value: - self.log(8, "asking user to zap away") - Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"), timeout=20) - else: # zap without asking - self.log(9, "zap without asking") - Notifications.AddNotification(MessageBox, _("In order to record a timer, the TV was switched to the recording service!\n"), type=MessageBox.TYPE_INFO, timeout=20) - self.failureCB(True) - - self.do_backoff() - # retry - self.start_prepare = time.time() + self.backoff + cur_ref = NavigationInstance.instance.getCurrentlyPlayingServiceReference() + if cur_ref and not cur_ref.getPath(): + if not config.recording.asktozap.value: + self.log(8, "asking user to zap away") + Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"), timeout=20) + else: # zap without asking + self.log(9, "zap without asking") + Notifications.AddNotification(MessageBox, _("In order to record a timer, the TV was switched to the recording service!\n"), type=MessageBox.TYPE_INFO, timeout=20) + self.failureCB(True) + elif cur_ref: + 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") return False elif next_state == self.StateRunning: # if this timer has been cancelled, just go to "end" state. @@ -569,9 +577,10 @@ class RecordTimer(timer.Timer): def getNextRecordingTime(self): now = time.time() for timer in self.timer_list: - if timer.justplay or timer.begin < now: + next_act = timer.getNextActivation() + if timer.justplay or next_act < now: continue - return timer.begin + return next_act return -1 def isNextRecordAfterEventActionAuto(self):