void dvr_entry_set_rerecord(dvr_entry_t *de, int cmd);
-void dvr_entry_move(dvr_entry_t *de, int failed);
+void dvr_entry_move(dvr_entry_t *de, int to_failed);
dvr_entry_t *dvr_entry_stop(dvr_entry_t *de);
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 success = entry->de_sched_state == DVR_COMPLETED &&
- entry->de_last_error == SM_CODE_OK &&
- entry->de_data_errors < DVR_MAX_DATA_ERRORS;
+ 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 ((flags & DVR_FINISHED_REMOVED_SUCCESS) && removed && success)
return 1;
}
if (dvr_get_filesize(de, 0) == -1 && !de->de_file_removed)
return N_("File missing");
- if(de->de_data_errors >= DVR_MAX_DATA_ERRORS) /* user configurable threshold? */
+ if(de->de_last_error != SM_CODE_FORCE_OK &&
+ de->de_data_errors >= DVR_MAX_DATA_ERRORS) /* user configurable threshold? */
return N_("Too many data errors");
if(de->de_last_error)
return streaming_code2txt(de->de_last_error);
*
*/
void
-dvr_entry_move(dvr_entry_t *de, int failed)
+dvr_entry_move(dvr_entry_t *de, int to_failed)
{
if(de->de_sched_state == DVR_COMPLETED)
- if (dvr_entry_completed(de, failed ? SM_CODE_USER_REQUEST : SM_CODE_OK))
+ if (dvr_entry_completed(de, to_failed ? SM_CODE_USER_REQUEST :
+ SM_CODE_FORCE_OK))
idnode_changed(&de->de_id);
}
fsize = dvr_get_filesize(de, DVR_FILESIZE_UPDATE);
if (fsize < 0)
error = "File missing";
- else if(de->de_last_error)
+ else if(de->de_last_error != SM_CODE_OK &&
+ de->de_last_error != SM_CODE_FORCE_OK)
error = streaming_code2txt(de->de_last_error);
break;
case DVR_MISSED_TIME:
#define SM_CODE_UNDEFINED_ERROR 1
+#define SM_CODE_FORCE_OK 10
+
#define SM_CODE_SOURCE_RECONFIGURED 100
#define SM_CODE_BAD_SOURCE 101
#define SM_CODE_SOURCE_DELETED 102