Fix #1459 - fix removal of all autorec recordings on startup
There were 2 issues here:
- recent changes meant that recordings were purged on every startup
- long standing issue meant complete recordings were removed on
removal of an autorec rule (which I don't think was intended).
(cherry picked from commit d23f60b031
)
This commit is contained in:
parent
661124c7a3
commit
faee94bcb3
3 changed files with 15 additions and 11 deletions
|
@ -247,6 +247,8 @@ void dvr_config_delete(const char *name);
|
|||
|
||||
void dvr_entry_notify(dvr_entry_t *de);
|
||||
|
||||
void dvr_entry_save(dvr_entry_t *de);
|
||||
|
||||
const char *dvr_entry_status(dvr_entry_t *de);
|
||||
|
||||
const char *dvr_entry_schedstatus(dvr_entry_t *de);
|
||||
|
|
|
@ -42,10 +42,10 @@ static int dvr_autorec_in_init = 0;
|
|||
|
||||
struct dvr_autorec_entry_queue autorec_entries;
|
||||
|
||||
static void dvr_autorec_changed(dvr_autorec_entry_t *dae);
|
||||
static void dvr_autorec_changed(dvr_autorec_entry_t *dae, int purge);
|
||||
|
||||
/**
|
||||
*
|
||||
* Unlink - and remove any unstarted
|
||||
*/
|
||||
static void
|
||||
dvr_autorec_purge_spawns(dvr_autorec_entry_t *dae)
|
||||
|
@ -55,7 +55,10 @@ dvr_autorec_purge_spawns(dvr_autorec_entry_t *dae)
|
|||
while((de = LIST_FIRST(&dae->dae_spawns)) != NULL) {
|
||||
LIST_REMOVE(de, de_autorec_link);
|
||||
de->de_autorec = NULL;
|
||||
dvr_entry_cancel(de);
|
||||
if (de->de_sched_state == DVR_SCHEDULED)
|
||||
dvr_entry_cancel(de);
|
||||
else
|
||||
dvr_entry_save(de);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -425,7 +428,7 @@ autorec_record_update(void *opaque, const char *id, htsmsg_t *values,
|
|||
dae->dae_serieslink->getref(dae->dae_serieslink);
|
||||
}
|
||||
if (!dvr_autorec_in_init)
|
||||
dvr_autorec_changed(dae);
|
||||
dvr_autorec_changed(dae, 1);
|
||||
|
||||
return autorec_record_build(dae);
|
||||
}
|
||||
|
@ -478,7 +481,7 @@ dvr_autorec_update(void)
|
|||
{
|
||||
dvr_autorec_entry_t *dae;
|
||||
TAILQ_FOREACH(dae, &autorec_entries, dae_link) {
|
||||
dvr_autorec_changed(dae);
|
||||
dvr_autorec_changed(dae, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -539,7 +542,7 @@ _dvr_autorec_add(const char *config_name,
|
|||
htsmsg_add_u32(m, "reload", 1);
|
||||
notify_by_msg("autorec", m);
|
||||
|
||||
dvr_autorec_changed(dae);
|
||||
dvr_autorec_changed(dae, 1);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -608,12 +611,13 @@ void dvr_autorec_check_serieslink(epg_serieslink_t *s)
|
|||
*
|
||||
*/
|
||||
static void
|
||||
dvr_autorec_changed(dvr_autorec_entry_t *dae)
|
||||
dvr_autorec_changed(dvr_autorec_entry_t *dae, int purge)
|
||||
{
|
||||
channel_t *ch;
|
||||
epg_broadcast_t *e;
|
||||
|
||||
dvr_autorec_purge_spawns(dae);
|
||||
if (purge)
|
||||
dvr_autorec_purge_spawns(dae);
|
||||
|
||||
RB_FOREACH(ch, &channel_name_tree, ch_name_link) {
|
||||
RB_FOREACH(e, &ch->ch_epg_schedule, sched_link) {
|
||||
|
|
|
@ -37,8 +37,6 @@ int dvr_iov_max;
|
|||
struct dvr_config_list dvrconfigs;
|
||||
struct dvr_entry_list dvrentries;
|
||||
|
||||
static void dvr_entry_save(dvr_entry_t *de);
|
||||
|
||||
static void dvr_timer_expire(void *aux);
|
||||
static void dvr_timer_start_recording(void *aux);
|
||||
|
||||
|
@ -573,7 +571,7 @@ dvr_db_load(void)
|
|||
/**
|
||||
*
|
||||
*/
|
||||
static void
|
||||
void
|
||||
dvr_entry_save(dvr_entry_t *de)
|
||||
{
|
||||
htsmsg_t *m = htsmsg_create_map();
|
||||
|
|
Loading…
Add table
Reference in a new issue