static inline int dvr_entry_is_valid(dvr_entry_t *de)
{ return de->de_refcnt > 0; }
+static inline int dvr_entry_is_completed_ok(dvr_entry_t *de)
+ { assert(de->de_sched_state == DVR_COMPLETED);
+ return de->de_last_error == SM_CODE_FORCE_OK ||
+ de->de_last_error == SM_CODE_PREVIOUSLY_RECORDED; }
+
char *dvr_entry_get_retention_string ( dvr_entry_t *de );
char *dvr_entry_get_removal_string ( dvr_entry_t *de );
if (!flags || (flags & DVR_FINISHED_ALL))
return 1;
- int removed = entry->de_file_removed || /* Removed by tvheadend */
- (entry->de_sched_state != DVR_MISSED_TIME && dvr_get_filesize(entry, 0) == -1); /* Removed externally? */
+ int removed = entry->de_file_removed || /* Removed by tvheadend */
+ (entry->de_sched_state != DVR_MISSED_TIME &&
+ dvr_get_filesize(entry, 0) < 0); /* Removed externally? */
int success = entry->de_sched_state == DVR_COMPLETED;
- if (success && entry->de_last_error != SM_CODE_FORCE_OK)
- success = entry->de_last_error == SM_CODE_OK &&
- entry->de_data_errors < DVR_MAX_DATA_ERRORS;
+ if (success && !dvr_entry_is_completed_ok(entry))
+ success = entry->de_last_error == SM_CODE_OK &&
+ entry->de_data_errors < DVR_MAX_DATA_ERRORS;
if ((flags & DVR_FINISHED_REMOVED_SUCCESS) && removed && success)
return 1;
default:
break;
}
- if (dvr_get_filesize(de, 0) == -1 && !de->de_file_removed)
+ if (dvr_get_filesize(de, 0) < 0 && !de->de_file_removed)
return N_("File missing");
if(de->de_last_error != SM_CODE_FORCE_OK &&
de->de_data_errors >= DVR_MAX_DATA_ERRORS) /* user configurable threshold? */
break;
case DVR_COMPLETED:
s = "completed";
- if(de->de_last_error ||
- (dvr_get_filesize(de, 0) == -1 && !de->de_file_removed))
+ if(!dvr_entry_is_completed_ok(de) ||
+ (dvr_get_filesize(de, 0) < 0 && !de->de_file_removed))
s = "completedError";
rerecord = de->de_dont_rerecord ? 0 : dvr_entry_get_rerecord_errors(de);
if(rerecord && (de->de_errors || de->de_data_errors > rerecord))
dvr_entry_cancel_delete(de2, 1);
}
} else if (de->de_sched_state == DVR_COMPLETED) {
- if(dvr_get_filesize(de, 0) == -1) {
+ if(dvr_get_filesize(de, 0) < 0) {
delete_me:
dvr_entry_cancel_delete(de, 0);
dvr_entry_rerecord(de2);
dvr_entry_retention_timer(de);
- htsp_dvr_entry_update(de);
- idnode_notify_changed(&de->de_id);
+ dvr_entry_changed_notify(de);
tvhinfo(LS_DVR, "\"%s\" on \"%s\": "
"%sset as previously recorded",