From: Adam Sutton Date: Mon, 8 Apr 2013 18:38:50 +0000 (+0100) Subject: dvr: attempt to stop new DVR code creating false entries X-Git-Tag: v3.9~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9abf21525aade2f7bb54cc931960270237048b53;p=thirdparty%2Ftvheadend.git dvr: attempt to stop new DVR code creating false entries --- diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 4e5774999..d6a1562ca 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; + } } } }