Ensure that recordings that never start are given a fault state. Fixes #1094.

This commit is contained in:
Adam Sutton 2012-09-19 14:49:23 +01:00
parent 9c85095f61
commit b65a3a4ebd
2 changed files with 20 additions and 12 deletions

View file

@ -755,14 +755,17 @@ dvr_stop_recording(dvr_entry_t *de, int stopcode)
{
dvr_config_t *cfg = dvr_config_find_by_name_default(de->de_config_name);
dvr_rec_unsubscribe(de, stopcode);
if (de->de_rec_state == DVR_RS_PENDING || de->de_rec_state == DVR_RS_WAIT_PROGRAM_START)
de->de_sched_state = DVR_MISSED_TIME;
else
de->de_sched_state = DVR_COMPLETED;
de->de_sched_state = DVR_COMPLETED;
dvr_rec_unsubscribe(de, stopcode);
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\": "
"End of program: %s",
lang_str_get(de->de_title, NULL), de->de_channel->ch_name,
streaming_code2txt(de->de_last_error) ?: "Program ended");
dvr_entry_status(de));
dvr_entry_save(de);
htsp_dvr_entry_update(de);
@ -773,7 +776,6 @@ dvr_stop_recording(dvr_entry_t *de, int stopcode)
}
/**
*
*/

View file

@ -298,13 +298,19 @@ dvr_rec_fatal_error(dvr_entry_t *de, const char *fmt, ...)
static void
dvr_rec_set_state(dvr_entry_t *de, dvr_rs_state_t newstate, int error)
{
if(de->de_rec_state == newstate)
return;
de->de_rec_state = newstate;
de->de_last_error = error;
if(error)
de->de_errors++;
dvr_entry_notify(de);
int notify = 0;
if(de->de_rec_state != newstate) {
de->de_rec_state = newstate;
notify = 1;
}
if(de->de_last_error != error) {
de->de_last_error = error;
notify = 1;
if(error)
de->de_errors++;
}
if (notify)
dvr_entry_notify(de);
}
/**
@ -501,7 +507,7 @@ dvr_thread(void *aux)
case SMT_NOSTART:
if(de->de_last_error != sm->sm_code) {
dvr_rec_set_state(de, DVR_RS_ERROR, sm->sm_code);
dvr_rec_set_state(de, DVR_RS_PENDING, sm->sm_code);
tvhlog(LOG_ERR,
"dvr", "Recording unable to start: \"%s\": %s",