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);
}
#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;
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;
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
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