From: Jaroslav Kysela Date: Sun, 25 Oct 2015 17:15:40 +0000 (+0100) Subject: DVR: add norerecord flag X-Git-Tag: v4.2.1~1778 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=420d323e7e20b8df7d6f23d2d41659917402963b;p=thirdparty%2Ftvheadend.git DVR: add norerecord flag --- diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index aee3e8781..7e3a58075 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -165,6 +165,7 @@ typedef struct dvr_entry { int de_pri; int de_dont_reschedule; + int de_dont_rerecord; int de_mc; uint32_t de_retention; uint32_t de_removal; diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index fa814c725..90c3f6041 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -848,14 +848,17 @@ dvr_entry_clone(dvr_entry_t *de) static int dvr_entry_rerecord(dvr_entry_t *de) { - uint32_t rerecord = dvr_entry_get_rerecord_errors(de); + uint32_t rerecord; epg_broadcast_t *e, *ev; dvr_entry_t *de2; char cfg_uuid[UUID_HEX_SIZE]; char buf[512]; int64_t fsize1, fsize2; - if (rerecord == 0 || dvr_in_init) + if (dvr_in_init || de->de_dont_rerecord) + return 0; + rerecord = dvr_entry_get_rerecord_errors(de); + if (rerecord == 0) return 0; if ((de2 = de->de_parent) != NULL) { if (de->de_sched_state == DVR_COMPLETED && @@ -2621,7 +2624,15 @@ const idclass_t dvr_entry_class = { .type = PT_BOOL, .id = "noresched", .name = N_("Don't Reschedule"), - .off = offsetof(dvr_entry_t, de_dont_reschedule) + .off = offsetof(dvr_entry_t, de_dont_reschedule), + .opts = PO_HIDDEN, + }, + { + .type = PT_BOOL, + .id = "norerecord", + .name = N_("Don't re-record"), + .off = offsetof(dvr_entry_t, de_dont_rerecord), + .opts = PO_HIDDEN, }, { .type = PT_STR, @@ -2908,8 +2919,12 @@ dvr_entry_cancel(dvr_entry_t *de, int rerecord) abort(); } - if (rerecord && parent) - dvr_entry_rerecord(parent); + if (parent) { + if (!rerecord) + parent->de_dont_rerecord = 1; + else + dvr_entry_rerecord(parent); + } } /** @@ -2939,8 +2954,12 @@ dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord) abort(); } - if (rerecord && parent) - dvr_entry_rerecord(parent); + if (parent) { + if (!rerecord) + parent->de_dont_rerecord = 1; + else + dvr_entry_rerecord(parent); + } } /**