- self.prepareOK = True
- else:
- # error.
- Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"))
- elif event == self.EventStart:
- if self.prepareOK:
- self.record_service.start()
- print "timer started!"
- else:
- print "prepare failed, thus start failed, too."
- self.wantStart = True
- elif event == self.EventEnd or event == self.EventAbort:
- self.wantStart = False
- if self.prepareOK:
- self.record_service.stop()
- self.record_service = None
- print "Timer successfully ended"
- else:
- print "prepare failed, thus nothing was recorded."
+ self.log(6, "prepare ok, waiting for begin")
+ # fine. it worked, resources are allocated.
+ 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 config.recording.asktozap.value == 0:
+ self.log(8, "asking user to zap away")
+ Notifications.AddNotificationWithCallback(self.failureCB, MessageBox, _("A timer failed to record!\nDisable TV and try again?\n"))
+ else: # zap without asking
+ self.log(9, "zap without asking")
+ self.failureCB(True)
+
+ self.do_backoff()
+ # retry
+ self.start_prepare = time.time() + self.backoff
+ return False
+ elif next_state == self.StateRunning:
+ self.log(11, "start recording")
+ record_res = self.record_service.start()
+
+ if record_res:
+ self.log(13, "start record returned %d" % record_res)
+ self.do_backoff()
+ # retry
+ self.begin = time.time() + self.backoff
+ return False
+
+ return True
+ elif next_state == self.StateEnded:
+ self.log(12, "stop recording")
+ self.record_service.stop()
+ self.record_service = None
+ return True