Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: Another state cleanups, fixeds#2866
  • Loading branch information
perexg committed May 21, 2015
1 parent e91b0f2 commit 5ec3810
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 10 deletions.
2 changes: 0 additions & 2 deletions src/dvr/dvr.h
Expand Up @@ -413,8 +413,6 @@ void dvr_entry_destroy_by_config(dvr_config_t *cfg, int delconf);
int dvr_entry_set_state(dvr_entry_t *de, dvr_entry_sched_state_t state,
dvr_rs_state_t rec_state, int error_code);

void dvr_entry_completed(dvr_entry_t *de, int error_code);

const char *dvr_entry_status(dvr_entry_t *de);

const char *dvr_entry_schedstatus(dvr_entry_t *de);
Expand Down
45 changes: 38 additions & 7 deletions src/dvr/dvr_db.c
Expand Up @@ -226,16 +226,47 @@ dvr_dbus_timer_cb( void *aux )
}
#endif

/*
*
*/
static void
dvr_entry_retention_timer(dvr_entry_t *de)
{
gtimer_arm_abs(&de->de_timer, dvr_timer_expire, de,
de->de_stop + dvr_entry_get_retention(de) * 86400);
}

/*
* No state
*/
static void
dvr_entry_nostate(dvr_entry_t *de, int error_code)
{
dvr_entry_set_state(de, DVR_NOSTATE, DVR_RS_PENDING, de->de_last_error);
dvr_entry_retention_timer(de);
}

/*
* Missed time
*/
static void
dvr_entry_missed_time(dvr_entry_t *de, int error_code)
{
dvr_entry_set_state(de, DVR_MISSED_TIME, DVR_RS_PENDING, error_code);
dvr_entry_retention_timer(de);
}

/*
* Completed
*/
void
static void
dvr_entry_completed(dvr_entry_t *de, int error_code)
{
dvr_entry_set_state(de, DVR_COMPLETED, DVR_RS_PENDING, error_code);
#if ENABLE_INOTIFY
dvr_inotify_add(de);
#endif
dvr_entry_retention_timer(de);
}

/**
Expand Down Expand Up @@ -342,11 +373,9 @@ dvr_entry_set_timer(dvr_entry_t *de)
if(now >= stop || de->de_dont_reschedule) {

if(htsmsg_is_empty(de->de_files))
dvr_entry_set_state(de, DVR_MISSED_TIME, DVR_RS_PENDING, de->de_last_error);
dvr_entry_missed_time(de, de->de_last_error);
else
dvr_entry_completed(de, de->de_last_error);
gtimer_arm_abs(&de->de_timer, dvr_timer_expire, de,
de->de_stop + dvr_entry_get_retention(de) * 86400);

} else if (de->de_sched_state == DVR_RECORDING) {

Expand All @@ -364,7 +393,7 @@ dvr_entry_set_timer(dvr_entry_t *de)

} else {

dvr_entry_set_state(de, DVR_NOSTATE, DVR_RS_PENDING, de->de_last_error);
dvr_entry_nostate(de, de->de_last_error);

}
}
Expand Down Expand Up @@ -1124,7 +1153,7 @@ dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf)
if (rec_state == DVR_RS_PENDING ||
rec_state == DVR_RS_WAIT_PROGRAM_START ||
htsmsg_is_empty(de->de_files))
dvr_entry_set_state(de, DVR_MISSED_TIME, DVR_RS_PENDING, stopcode);
dvr_entry_missed_time(de, stopcode);
else
dvr_entry_completed(de, stopcode);

Expand Down Expand Up @@ -1176,8 +1205,10 @@ dvr_timer_start_recording(void *aux)
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\" recorder starting",
lang_str_get(de->de_title, NULL), DVR_CH_NAME(de));

if (dvr_rec_subscribe(de))
if (dvr_rec_subscribe(de)) {
dvr_entry_completed(de, SM_CODE_BAD_SOURCE);
return;
}

gtimer_arm_abs(&de->de_timer, dvr_timer_stop_recording, de,
dvr_entry_get_stop_time(de));
Expand Down
3 changes: 2 additions & 1 deletion src/dvr/dvr_rec.c
Expand Up @@ -86,7 +86,8 @@ dvr_rec_subscribe(dvr_entry_t *de)
tcp_get_ip_from_str(de->de_creator, &sa) != NULL)
aa = access_get_by_addr(&sa);
else {
tvherror("dvr", "unable to find access");
tvherror("dvr", "unable to find access (owner '%s', creator '%s')",
de->de_owner, de->de_creator);
return -1;
}

Expand Down

0 comments on commit 5ec3810

Please sign in to comment.