]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
also rerecord when a removed recording was failed
authorGlenn-1990 <g_christiaensen@msn.com>
Fri, 2 Dec 2016 20:47:25 +0000 (21:47 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 20 Dec 2016 09:00:06 +0000 (10:00 +0100)
src/api/api_dvr.c
src/dvr/dvr.h
src/dvr/dvr_db.c

index f6a73fc78f87a82f422d66cc3a950eccd4a1f2a6..22ae5dd69f9470d29c107bd7638e172d4814d8af 100644 (file)
@@ -115,7 +115,7 @@ api_dvr_entry_grid_removed
   dvr_entry_t *de;
 
   LIST_FOREACH(de, &dvrentries, de_global_link)
-    if (dvr_entry_is_finished(de, DVR_FINISHED_REMOVED))
+    if (dvr_entry_is_finished(de, DVR_FINISHED_REMOVED_SUCCESS | DVR_FINISHED_REMOVED_FAILED))
       idnode_set_add(ins, (idnode_t*)de, &conf->filter, perm->aa_lang_ui);
 }
 
index 15bae1cc4e485f3a471850b1b6eda2557e5a7a33..987f95893d5f575c9023a3ab1617b95308667e2d 100644 (file)
 #define DVR_FILESIZE_UPDATE     (1<<0)
 #define DVR_FILESIZE_TOTAL      (1<<1)
 
-#define DVR_FINISHED_ALL        (1<<0)
-#define DVR_FINISHED_SUCCESS    (1<<1)
-#define DVR_FINISHED_REMOVED    (1<<2)
-#define DVR_FINISHED_FAILED     (1<<3)
+#define DVR_FINISHED_ALL             (1<<0)
+#define DVR_FINISHED_SUCCESS         (1<<1) 
+#define DVR_FINISHED_FAILED          (1<<2) 
+#define DVR_FINISHED_REMOVED_SUCCESS (1<<3) /* Removed recording, was succesful before */
+#define DVR_FINISHED_REMOVED_FAILED  (1<<4) /* Removed recording, was failed before */
 
 typedef struct dvr_vfs {
   LIST_ENTRY(dvr_vfs) link;
index dfa0b13a225942d38417c622db7b4eae406b0742..9944eaa424254c05a8dfc83da24e052597d10a0c 100644 (file)
@@ -142,7 +142,9 @@ int dvr_entry_is_finished(dvr_entry_t *entry, int flags)
   int success = entry->de_sched_state == DVR_COMPLETED &&
       !entry->de_last_error && entry->de_data_errors < DVR_MAX_DATA_ERRORS;
 
-  if ((flags & DVR_FINISHED_REMOVED) && removed)
+  if ((flags & DVR_FINISHED_REMOVED_SUCCESS) && removed && success)
+    return 1;
+  if ((flags & DVR_FINISHED_REMOVED_FAILED) && removed && !success)
     return 1;
   if ((flags & DVR_FINISHED_SUCCESS) && success && !removed)
     return 1;
@@ -1332,7 +1334,7 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de)
         continue;
 
       // only successful earlier recordings qualify as master
-      if (dvr_entry_is_finished(de2, DVR_FINISHED_FAILED))
+      if (dvr_entry_is_finished(de2, DVR_FINISHED_FAILED | DVR_FINISHED_REMOVED_FAILED))
         continue;
 
       // if titles are not defined or do not match, don't dedup
@@ -1363,7 +1365,7 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de)
         continue;
 
       // only successful earlier recordings qualify as master
-      if (dvr_entry_is_finished(de2, DVR_FINISHED_FAILED))
+      if (dvr_entry_is_finished(de2, DVR_FINISHED_FAILED | DVR_FINISHED_REMOVED_FAILED))
         continue;
 
       // if titles are not defined or do not match, don't dedup