From: Jaroslav Kysela Date: Wed, 6 Jan 2016 13:52:09 +0000 (+0100) Subject: DVR: optimize _dvr_duplicate_event - de_start handling X-Git-Tag: v4.2.1~1207 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1b6413ae5601f540f0c0ef6406ce066b1a1c9a42;p=thirdparty%2Ftvheadend.git DVR: optimize _dvr_duplicate_event - de_start handling --- diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 2d6a2f269..e1f8bb211 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -1066,14 +1066,12 @@ not_so_good: static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de) { dvr_entry_t *de2; - struct tm de_start; int record; if (!de->de_autorec) return NULL; record = de->de_autorec->dae_record; - localtime_r(&de->de_start, &de_start); switch (record) { case DVR_AUTOREC_RECORD_ALL: @@ -1091,8 +1089,6 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de) return NULL; break; case DVR_AUTOREC_RECORD_ONCE_PER_WEEK: - de_start.tm_mday -= (de_start.tm_wday + 6) % 7; // week = mon-sun - mktime(&de_start); // adjusts de_start break; } @@ -1132,18 +1128,24 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de) return de2; break; case DVR_AUTOREC_RECORD_ONCE_PER_WEEK: { - struct tm de2_start; + struct tm de1_start, de2_start; + localtime_r(&de->de_start, &de1_start); localtime_r(&de2->de_start, &de2_start); + de1_start.tm_mday -= (de1_start.tm_wday + 6) % 7; // week = mon-sun de2_start.tm_mday -= (de2_start.tm_wday + 6) % 7; // week = mon-sun + mktime(&de1_start); // adjusts de_start mktime(&de2_start); // adjusts de2_start - if (de_start.tm_year == de2_start.tm_year && de_start.tm_yday == de2_start.tm_yday) + if (de1_start.tm_year == de2_start.tm_year && + de1_start.tm_yday == de2_start.tm_yday) return de2; break; } case DVR_AUTOREC_RECORD_ONCE_PER_DAY: { - struct tm de2_start; + struct tm de1_start, de2_start; + localtime_r(&de->de_start, &de1_start); localtime_r(&de2->de_start, &de2_start); - if (de_start.tm_year == de2_start.tm_year && de_start.tm_yday == de2_start.tm_yday) + if (de1_start.tm_year == de2_start.tm_year && + de1_start.tm_yday == de2_start.tm_yday) return de2; break; }