]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvr: attempt to stop new DVR code creating false entries 3.4beta6
authorAdam Sutton <dev@adamsutton.me.uk>
Mon, 8 Apr 2013 18:38:50 +0000 (19:38 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Thu, 11 Apr 2013 08:45:26 +0000 (09:45 +0100)
(cherry picked from commit 9abf21525aade2f7bb54cc931960270237048b53)

Conflicts:

src/dvr/dvr_db.c

src/dvr/dvr_db.c

index 100400c25af09ed956e6594dd633adbdc51d8a29..eb0aba1552d53f8263acc588a2732d28cc46abc0 100644 (file)
@@ -804,17 +804,27 @@ dvr_event_replaced(epg_broadcast_t *e, epg_broadcast_t *new_e)
   /* Existing entry */
   if ((de = dvr_entry_find_by_event(e))) {
 
+    /* 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)) {
-        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)) {
+          e->getref(e);
+          de->de_bcast = e;
+          _dvr_entry_update(de, e, NULL, NULL, NULL, 0, 0, 0, 0);
+          break;
+        }
       }
     }
   }