From 9abf21525aade2f7bb54cc931960270237048b53 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Mon, 8 Apr 2013 19:38:50 +0100 Subject: [PATCH] dvr: attempt to stop new DVR code creating false entries --- src/dvr/dvr_db.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 4e577499..d6a1562c 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -820,22 +820,32 @@ dvr_event_replaced(epg_broadcast_t *e, epg_broadcast_t *new_e) de->de_id, epg_broadcast_get_title(e, NULL), e->channel->ch_name, e->start, e->stop); + /* Ignore - already in progress */ + if (de->de_sched_state != DVR_SCHEDULED) + return; + /* Unlink the broadcast */ e->putref(e); de->de_bcast = NULL; + /* If this was craeted by autorec - just remove it, it'll get recreated */ + if (de->de_autorec) { + dvr_entry_remove(de); + /* Find match */ - RB_FOREACH(e, &e->channel->ch_epg_schedule, sched_link) { - if (dvr_entry_fuzzy_match(de, e)) { - tvhtrace("dvr", - " replacement event %s on %s @ %"PRItime_t - " to %"PRItime_t, - epg_broadcast_get_title(e, NULL), e->channel->ch_name, - e->start, e->stop); - e->getref(e); - de->de_bcast = e; - _dvr_entry_update(de, e, NULL, NULL, NULL, 0, 0, 0, 0); - break; + } else { + RB_FOREACH(e, &e->channel->ch_epg_schedule, sched_link) { + if (dvr_entry_fuzzy_match(de, e)) { + tvhtrace("dvr", + " replacement event %s on %s @ %"PRItime_t + " to %"PRItime_t, + epg_broadcast_get_title(e, NULL), e->channel->ch_name, + e->start, e->stop); + e->getref(e); + de->de_bcast = e; + _dvr_entry_update(de, e, NULL, NULL, NULL, 0, 0, 0, 0); + break; + } } } }