Issue #1453 - Fix autorec init issue (duplicate entries)
With previous init change, the scheduled events may be duplicated. Split the dvr_autorec_init() to two phases: 1) load the autorec list 2) update the scheduled events after dvr db is initialized
This commit is contained in:
parent
86fac417c2
commit
4419dde14b
3 changed files with 18 additions and 1 deletions
|
@ -280,6 +280,8 @@ void dvr_init(void);
|
|||
|
||||
void dvr_autorec_init(void);
|
||||
|
||||
void dvr_autorec_update(void);
|
||||
|
||||
void dvr_destroy_by_channel(channel_t *ch);
|
||||
|
||||
void dvr_rec_subscribe(dvr_entry_t *de);
|
||||
|
|
|
@ -38,6 +38,8 @@ dtable_t *autorec_dt;
|
|||
|
||||
TAILQ_HEAD(dvr_autorec_entry_queue, dvr_autorec_entry);
|
||||
|
||||
static int dvr_autorec_in_init = 0;
|
||||
|
||||
struct dvr_autorec_entry_queue autorec_entries;
|
||||
|
||||
static void dvr_autorec_changed(dvr_autorec_entry_t *dae);
|
||||
|
@ -422,7 +424,8 @@ autorec_record_update(void *opaque, const char *id, htsmsg_t *values,
|
|||
if (dae->dae_serieslink)
|
||||
dae->dae_serieslink->getref(dae->dae_serieslink);
|
||||
}
|
||||
dvr_autorec_changed(dae);
|
||||
if (!dvr_autorec_in_init)
|
||||
dvr_autorec_changed(dae);
|
||||
|
||||
return autorec_record_build(dae);
|
||||
}
|
||||
|
@ -465,7 +468,18 @@ dvr_autorec_init(void)
|
|||
{
|
||||
TAILQ_INIT(&autorec_entries);
|
||||
autorec_dt = dtable_create(&autorec_dtc, "autorec", NULL);
|
||||
dvr_autorec_in_init = 1;
|
||||
dtable_load(autorec_dt);
|
||||
dvr_autorec_in_init = 0;
|
||||
}
|
||||
|
||||
void
|
||||
dvr_autorec_update(void)
|
||||
{
|
||||
dvr_autorec_entry_t *dae;
|
||||
TAILQ_FOREACH(dae, &autorec_entries, dae_link) {
|
||||
dvr_autorec_changed(dae);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -1036,6 +1036,7 @@ dvr_init(void)
|
|||
|
||||
dvr_autorec_init();
|
||||
dvr_db_load();
|
||||
dvr_autorec_update();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue