Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: rerecord - don't call rerecord when user deleted child
  • Loading branch information
perexg committed Oct 25, 2015
1 parent 3eca162 commit 9ed87f9
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 38 deletions.
2 changes: 1 addition & 1 deletion src/api/api_dvr.c
Expand Up @@ -270,7 +270,7 @@ api_dvr_entry_stop
static void
api_dvr_cancel(access_t *perm, idnode_t *self)
{
dvr_entry_cancel((dvr_entry_t *)self);
dvr_entry_cancel((dvr_entry_t *)self, 0);
}

static int
Expand Down
4 changes: 2 additions & 2 deletions src/dvr/dvr.h
Expand Up @@ -514,13 +514,13 @@ int64_t dvr_get_filesize(dvr_entry_t *de);

dvr_entry_t *dvr_entry_stop(dvr_entry_t *de);

dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de);
dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de, int rerecord);

void dvr_entry_dec_ref(dvr_entry_t *de);

void dvr_entry_delete(dvr_entry_t *de, int no_missed_time_resched);

void dvr_entry_cancel_delete(dvr_entry_t *de);
void dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord);

htsmsg_t *dvr_entry_class_mc_list (void *o, const char *lang);
htsmsg_t *dvr_entry_class_pri_list(void *o, const char *lang);
Expand Down
4 changes: 2 additions & 2 deletions src/dvr/dvr_autorec.c
Expand Up @@ -63,7 +63,7 @@ dvr_autorec_purge_spawns(dvr_autorec_entry_t *dae, int del, int disabled)
bcast[i++] = de->de_bcast;
}
}
dvr_entry_cancel(de);
dvr_entry_cancel(de, 0);
} else
dvr_entry_save(de);
}
Expand Down Expand Up @@ -101,7 +101,7 @@ dvr_autorec_completed(dvr_entry_t *de, int error_code)
if (de_prev) {
tvhinfo("dvr", "autorec %s removing recordings %s (allowed count %u total %u)",
dae->dae_name, idnode_uuid_as_sstr(&de_prev->de_id), dae->dae_max_count, total);
dvr_entry_cancel_delete(de_prev);
dvr_entry_cancel_delete(de_prev, 0);
}
}
}
Expand Down
47 changes: 20 additions & 27 deletions src/dvr/dvr_db.c
Expand Up @@ -477,13 +477,6 @@ dvr_usage_count(access_t *aa)
return used;
}

static void
dvr_entry_set_timer_cb(void *aux)
{
dvr_entry_t *de = aux;
dvr_entry_set_timer(de);
}

static void
dvr_entry_set_timer(dvr_entry_t *de)
{
Expand Down Expand Up @@ -873,12 +866,12 @@ dvr_entry_rerecord(dvr_entry_t *de)
if (fsize1 / 5 < fsize2 / 6) {
goto not_so_good;
} else {
dvr_entry_cancel_delete(de2);
dvr_entry_cancel_delete(de2, 1);
}
} else if (de->de_sched_state == DVR_COMPLETED) {
if(dvr_get_filesize(de) == -1) {
delete_me:
dvr_entry_cancel_delete(de);
dvr_entry_cancel_delete(de, 0);
dvr_entry_rerecord(de2);
return 1;
}
Expand Down Expand Up @@ -1106,8 +1099,6 @@ dvr_entry_dec_ref(dvr_entry_t *de)
static void
dvr_entry_destroy(dvr_entry_t *de, int delconf)
{
dvr_entry_t *parent;

if (delconf)
hts_settings_remove("dvr/log/%s", idnode_uuid_as_sstr(&de->de_id));

Expand All @@ -1127,10 +1118,8 @@ dvr_entry_destroy(dvr_entry_t *de, int delconf)
LIST_REMOVE(de, de_global_link);
de->de_channel = NULL;

parent = de->de_parent;
if (parent)
if (dvr_entry_change_parent_child(NULL, de, de, delconf))
gtimer_arm(&parent->de_timer, dvr_entry_set_timer_cb, parent, 0);
if (de->de_parent)
dvr_entry_change_parent_child(NULL, de, de, delconf);
if (de->de_child)
dvr_entry_change_parent_child(de, NULL, de, delconf);

Expand Down Expand Up @@ -1562,7 +1551,7 @@ dvr_timer_start_recording(void *aux)

// if duplicate, then delete it now, don't record!
if (_dvr_duplicate_event(de)) {
dvr_entry_cancel_delete(de);
dvr_entry_cancel_delete(de, 1);
return;
}

Expand Down Expand Up @@ -1645,7 +1634,7 @@ dvr_entry_class_save(idnode_t *self)
static void
dvr_entry_class_delete(idnode_t *self)
{
dvr_entry_cancel_delete((dvr_entry_t *)self);
dvr_entry_cancel_delete((dvr_entry_t *)self, 0);
}

static int
Expand Down Expand Up @@ -2898,18 +2887,17 @@ dvr_entry_stop(dvr_entry_t *de)
*
*/
dvr_entry_t *
dvr_entry_cancel(dvr_entry_t *de)
dvr_entry_cancel(dvr_entry_t *de, int rerecord)
{
switch(de->de_sched_state) {
case DVR_SCHEDULED:
dvr_entry_destroy(de, 1);
return NULL;
dvr_entry_t *parent = de->de_parent;

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

case DVR_SCHEDULED:
case DVR_COMPLETED:
case DVR_MISSED_TIME:
case DVR_NOSTATE:
Expand All @@ -2919,19 +2907,20 @@ dvr_entry_cancel(dvr_entry_t *de)
default:
abort();
}

if (rerecord && parent)
dvr_entry_rerecord(parent);
}

/**
*
*/
void
dvr_entry_cancel_delete(dvr_entry_t *de)
dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord)
{
switch(de->de_sched_state) {
case DVR_SCHEDULED:
dvr_entry_destroy(de, 1);
break;
dvr_entry_t *parent = de->de_parent;

switch(de->de_sched_state) {
case DVR_RECORDING:
de->de_dont_reschedule = 1;
dvr_stop_recording(de, SM_CODE_ABORTED, 1, 0);
Expand All @@ -2940,6 +2929,7 @@ dvr_entry_cancel_delete(dvr_entry_t *de)
dvr_entry_destroy(de, 1);
break;

case DVR_SCHEDULED:
case DVR_MISSED_TIME:
case DVR_NOSTATE:
dvr_entry_destroy(de, 1);
Expand All @@ -2948,6 +2938,9 @@ dvr_entry_cancel_delete(dvr_entry_t *de)
default:
abort();
}

if (rerecord && parent)
dvr_entry_rerecord(parent);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/dvr/dvr_timerec.c
Expand Up @@ -75,7 +75,7 @@ dvr_timerec_purge_spawn(dvr_timerec_entry_t *dte, int delconf)
de->de_timerec = NULL;
if (delconf) {
if (de->de_sched_state == DVR_SCHEDULED)
dvr_entry_cancel(de);
dvr_entry_cancel(de, 0);
else
dvr_entry_save(de);
}
Expand Down
4 changes: 2 additions & 2 deletions src/htsp_server.c
Expand Up @@ -1685,7 +1685,7 @@ htsp_method_cancelDvrEntry(htsp_connection_t *htsp, htsmsg_t *in)
if (!htsp_user_access_channel(htsp, de->de_channel))
return htsp_error("User does not have access");

dvr_entry_cancel(de);
dvr_entry_cancel(de, 0);

//create response
out = htsmsg_create_map();
Expand Down Expand Up @@ -1717,7 +1717,7 @@ htsp_method_deleteDvrEntry(htsp_connection_t *htsp, htsmsg_t *in)
if (!htsp_user_access_channel(htsp, de->de_channel))
return htsp_error("User does not have access");

dvr_entry_cancel_delete(de);
dvr_entry_cancel_delete(de, 0);

//create response
out = htsmsg_create_map();
Expand Down
6 changes: 3 additions & 3 deletions src/webui/simpleui.c
Expand Up @@ -321,7 +321,7 @@ page_einfo(http_connection_t *hc, const char *remain, void *opaque)
hc->hc_representative ?: NULL, NULL,
DVR_PRIO_NORMAL, 0, 0, "simpleui");
} else if(de != NULL && (http_arg_get(&hc->hc_req_args, "cancel")) != NULL) {
de = dvr_entry_cancel(de);
de = dvr_entry_cancel(de, 0);
}

htsbuf_qprintf(hq, "<html>");
Expand Down Expand Up @@ -402,9 +402,9 @@ page_pvrinfo(http_connection_t *hc, const char *remain, void *opaque)
return 404;
}
if((http_arg_get(&hc->hc_req_args, "clear")) != NULL) {
de = dvr_entry_cancel(de);
de = dvr_entry_cancel(de, 0);
} else if((http_arg_get(&hc->hc_req_args, "cancel")) != NULL) {
de = dvr_entry_cancel(de);
de = dvr_entry_cancel(de, 0);
}

if(de == NULL) {
Expand Down

0 comments on commit 9ed87f9

Please sign in to comment.