]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Duplicate detection doesn't honor disabled timers
authorGlenn-1990 <g_christiaensen@msn.com>
Fri, 4 Nov 2016 14:37:48 +0000 (15:37 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 24 Nov 2016 14:08:18 +0000 (15:08 +0100)
src/dvr/dvr_db.c

index e1ec1030620833811a11464fced31ff1a8db1f80..7e51a6ec349e5c2f87a2d496b4ab104c4667a333 100644 (file)
@@ -1294,14 +1294,22 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de)
       if (de == de2)
         continue;
 
+      // check for valid states
+      if (de2->de_sched_state == DVR_NOSTATE ||
+          de2->de_sched_state == DVR_MISSED_TIME)
+        continue;
+
       // only earlier recordings qualify as master
       if (de2->de_start > de->de_start)
         continue;
 
+      // only enabled upcoming recordings
+      if (de2->de_sched_state == DVR_SCHEDULED && !de2->de_enabled)
+        continue;
+
       // only successful earlier recordings qualify as master
-      if (de2->de_sched_state == DVR_MISSED_TIME ||
-          (de2->de_sched_state == DVR_COMPLETED &&
-           de2->de_last_error != SM_CODE_OK))
+      if ((de2->de_sched_state == DVR_COMPLETED || de2->de_sched_state == DVR_RECORDING) &&
+          de2->de_last_error != SM_CODE_OK)
         continue;
 
       // if titles are not defined or do not match, don't dedup
@@ -1318,14 +1326,22 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de)
       if (de == de2)
         continue;
 
+      // check for valid states
+      if (de2->de_sched_state == DVR_NOSTATE ||
+          de2->de_sched_state == DVR_MISSED_TIME)
+        continue;
+
       // only earlier recordings qualify as master
       if (de2->de_start > de->de_start)
         continue;
 
+      // only enabled upcoming recordings
+      if (de2->de_sched_state == DVR_SCHEDULED && !de2->de_enabled)
+        continue;
+
       // only successful earlier recordings qualify as master
-      if (de2->de_sched_state == DVR_MISSED_TIME ||
-          (de2->de_sched_state == DVR_COMPLETED &&
-           de2->de_last_error != SM_CODE_OK))
+      if ((de2->de_sched_state == DVR_COMPLETED || de2->de_sched_state == DVR_RECORDING) &&
+          de2->de_last_error != SM_CODE_OK)
         continue;
 
       // if titles are not defined or do not match, don't dedup