Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: another de_dont_reschedule cleanups, fixes #3411
  • Loading branch information
perexg committed Dec 13, 2015
1 parent 1d8feb6 commit e4e30e3
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/dvr/dvr_db.c
Expand Up @@ -594,9 +594,10 @@ dvr_entry_set_timer(dvr_entry_t *de)
if (now >= stop || de->de_dont_reschedule) {

/* EPG thinks that the program is running */
if(de->de_running_start > de->de_running_stop) {
if(de->de_running_start > de->de_running_stop && !de->de_dont_reschedule) {
stop = dispatch_clock + 10;
goto recording;
if (de->de_sched_state == DVR_RECORDING)
goto recording;
}

/* Files are missing and job was completed */
Expand Down Expand Up @@ -938,7 +939,6 @@ dvr_entry_clone(dvr_entry_t *de)

if (n) {
if(de->de_sched_state == DVR_RECORDING) {
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_SOURCE_RECONFIGURED, 1, 1);
dvr_rec_migrate(de, n);
n->de_start = dispatch_clock;
Expand Down Expand Up @@ -1755,7 +1755,6 @@ void dvr_event_running(epg_broadcast_t *e, epg_source_t esrc, epg_running_t runn
atomic_exchange_time_t(&de->de_running_stop, dispatch_clock);
atomic_exchange_time_t(&de->de_running_pause, 0);
if (de->de_sched_state == DVR_RECORDING && de->de_running_start) {
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_OK, 0, 0);
tvhdebug("dvr", "dvr entry %s %s %s on %s - EPG stop",
idnode_uuid_as_str(&de->de_id, ubuf), srcname,
Expand Down Expand Up @@ -1786,6 +1785,8 @@ dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf, int clone)
if (!clone)
dvr_rec_unsubscribe(de);

de->de_dont_reschedule = 1;

if (stopcode != SM_CODE_INVALID_TARGET &&
(rec_state == DVR_RS_PENDING ||
rec_state == DVR_RS_WAIT_PROGRAM_START ||
Expand Down Expand Up @@ -1905,8 +1906,14 @@ dvr_entry_find_by_id(int id)
static void
dvr_entry_purge(dvr_entry_t *de, int delconf)
{
if(de->de_sched_state == DVR_RECORDING)
int dont_reschedule;

if(de->de_sched_state == DVR_RECORDING) {
dont_reschedule = de->de_dont_reschedule;
dvr_stop_recording(de, SM_CODE_SOURCE_DELETED, delconf, 0);
if (!delconf)
de->de_dont_reschedule = dont_reschedule;
}
}


Expand Down Expand Up @@ -3219,7 +3226,6 @@ dvr_entry_t *
dvr_entry_stop(dvr_entry_t *de)
{
if(de->de_sched_state == DVR_RECORDING) {
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_OK, 1, 0);
return de;
}
Expand All @@ -3237,7 +3243,6 @@ dvr_entry_cancel(dvr_entry_t *de, int rerecord)

switch(de->de_sched_state) {
case DVR_RECORDING:
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_ABORTED, 1, 0);
break;

Expand Down Expand Up @@ -3274,7 +3279,6 @@ dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord)

switch(de->de_sched_state) {
case DVR_RECORDING:
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_ABORTED, 1, 0);
case DVR_COMPLETED:
dvr_entry_delete(de, 1);
Expand Down

0 comments on commit e4e30e3

Please sign in to comment.