void dvr_destroy_by_channel(channel_t *ch, int delconf);
+void dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf);
+
int dvr_rec_subscribe(dvr_entry_t *de);
void dvr_rec_unsubscribe(dvr_entry_t *de);
}
case DVR_COMPLETED:
+ if(de->de_last_error == SM_CODE_INVALID_TARGET)
+ return "File Not Created";
if(dvr_get_filesize(de) == -1)
return "File Missing";
if(de->de_last_error)
/**
*
*/
-static void
+void
dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf)
{
dvr_rs_state_t rec_state = de->de_rec_state;
dvr_rec_unsubscribe(de);
- if (rec_state == DVR_RS_PENDING ||
- rec_state == DVR_RS_WAIT_PROGRAM_START ||
- htsmsg_is_empty(de->de_files))
+ if (stopcode != SM_CODE_INVALID_TARGET &&
+ (rec_state == DVR_RS_PENDING ||
+ rec_state == DVR_RS_WAIT_PROGRAM_START ||
+ htsmsg_is_empty(de->de_files)))
dvr_entry_missed_time(de, stopcode);
else
dvr_entry_completed(de, stopcode);
dvr_rec_set_state(de, DVR_RS_WAIT_PROGRAM_START, 0);
if(dvr_rec_start(de, sm->sm_data) == 0)
started = 1;
+ else
+ dvr_stop_recording(de, SM_CODE_INVALID_TARGET, 1);
pthread_mutex_unlock(&global_lock);
}
break;
return "subscriptionOverridden";
case SM_CODE_MUX_NOT_ENABLED:
return "muxNotEnabled";
+ case SM_CODE_INVALID_TARGET:
+ return "invalidTarget";
default:
return streaming_code2txt(smcode);
}
return "Source deleted";
case SM_CODE_SUBSCRIPTION_OVERRIDDEN:
return "Subscription overridden";
+ case SM_CODE_INVALID_TARGET:
+ return "Invalid target";
case SM_CODE_NO_FREE_ADAPTER:
return "No free adapter";
#define SM_CODE_BAD_SOURCE 101
#define SM_CODE_SOURCE_DELETED 102
#define SM_CODE_SUBSCRIPTION_OVERRIDDEN 103
+#define SM_CODE_INVALID_TARGET 104
#define SM_CODE_NO_FREE_ADAPTER 200
#define SM_CODE_MUX_NOT_ENABLED 201