]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Handle "retention", "startExtra", "stopExtra" defaults the same way as for normal...
authorKai Sommerfeld <kai.sommerfeld@gmx.com>
Sun, 24 May 2015 21:29:12 +0000 (23:29 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 25 May 2015 11:06:46 +0000 (13:06 +0200)
src/dvr/dvr.h
src/dvr/dvr_autorec.c
src/dvr/dvr_timerec.c
src/htsp_server.c

index 151e3aa5bd25c273d09876663cf5a9f00e62d8fb..5508d7769d3dbca6b790c3b19df6b9dfdc302059 100644 (file)
@@ -569,6 +569,12 @@ static inline int dvr_autorec_entry_verify(dvr_autorec_entry_t *dae, access_t *a
   return 0;
 }
 
+int dvr_autorec_get_retention( dvr_autorec_entry_t *dae );
+
+int dvr_autorec_get_extra_time_post( dvr_autorec_entry_t *dae );
+
+int dvr_autorec_get_extra_time_pre( dvr_autorec_entry_t *dae );
+
 /**
  *
  */
@@ -611,6 +617,8 @@ static inline int dvr_timerec_entry_verify(dvr_timerec_entry_t *dte, access_t *a
   return 0;
 }
 
+int dvr_timerec_get_retention( dvr_timerec_entry_t *dte );
+
 /**
  *
  */
index 6371f35a311c12f7b1089f9387348da565bacbc9..e6f8f2997a58d715bcf5147274226fdec1029707 100644 (file)
@@ -1245,3 +1245,53 @@ autorec_destroy_by_config(dvr_config_t *kcfg, int delconf)
       dvr_autorec_save(dae);
   }
 }
+
+static inline int extra_valid(time_t extra)
+{
+  return extra != 0 && extra != (time_t)-1;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_extra_time_pre( dvr_autorec_entry_t *dae )
+{
+  time_t extra = dae->dae_start_extra;
+
+  if (!extra_valid(extra)) {
+    if (dae->dae_channel)
+      extra = dae->dae_channel->ch_dvr_extra_time_pre;
+    if (!extra_valid(extra))
+      extra = dae->dae_config->dvr_extra_time_pre;
+  }
+  return extra;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_extra_time_post( dvr_autorec_entry_t *dae )
+{
+  time_t extra = dae->dae_stop_extra;
+
+  if (!extra_valid(extra)) {
+    if (dae->dae_channel)
+      extra = dae->dae_channel->ch_dvr_extra_time_post;
+    if (!extra_valid(extra))
+      extra = dae->dae_config->dvr_extra_time_post;
+  }
+  return extra;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_retention( dvr_autorec_entry_t *dae )
+{
+  if (dae->dae_retention > 0)
+    return dae->dae_retention;
+  return dae->dae_config->dvr_retention_days;
+}
index 333abdd7c1348f26ce7f11a63966d83bc4582448..3ade0bd8c2c9cc0b85f8e87b6ffb23b2d152be4c 100644 (file)
@@ -753,3 +753,14 @@ timerec_destroy_by_config(dvr_config_t *kcfg, int delconf)
       dvr_timerec_save(dte);
   }
 }
+
+/**
+ *
+ */
+int
+dvr_timerec_get_retention( dvr_timerec_entry_t *dte )
+{
+  if (dte->dte_retention > 0)
+    return dte->dte_retention;
+  return dte->dte_config->dvr_retention_days;
+}
index 0fc7d1a820866d75ee0aea03cf6c61906616520b..71e2c1921ff95a5253ca87b41066e97cb322a4cf 100644 (file)
@@ -760,7 +760,7 @@ htsp_build_autorecentry(dvr_autorec_entry_t *dae, const char *method)
   htsmsg_add_u32(out, "enabled",     dae->dae_enabled);
   htsmsg_add_u32(out, "maxDuration", dae->dae_maxduration);
   htsmsg_add_u32(out, "minDuration", dae->dae_minduration);
-  htsmsg_add_u32(out, "retention",   dae->dae_retention);
+  htsmsg_add_u32(out, "retention",   dvr_autorec_get_retention(dae));
   htsmsg_add_u32(out, "daysOfWeek",  dae->dae_weekdays);
   if (dae->dae_start >= 0 && dae->dae_start_window >= 0) {
     if (dae->dae_start > dae->dae_start_window)
@@ -776,8 +776,8 @@ htsp_build_autorecentry(dvr_autorec_entry_t *dae, const char *method)
   htsmsg_add_s32(out, "start",       dae->dae_start >= 0 ? dae->dae_start : -1);
   htsmsg_add_s32(out, "startWindow", dae->dae_start_window >= 0 ? dae->dae_start_window : -1);
   htsmsg_add_u32(out, "priority",    dae->dae_pri);
-  htsmsg_add_s64(out, "startExtra",  dae->dae_start_extra);
-  htsmsg_add_s64(out, "stopExtra",   dae->dae_stop_extra);
+  htsmsg_add_s64(out, "startExtra",  dvr_autorec_get_extra_time_pre(dae));
+  htsmsg_add_s64(out, "stopExtra",   dvr_autorec_get_extra_time_post(dae));
   htsmsg_add_u32(out, "dupDetect",   dae->dae_record);
 
   if(dae->dae_title) {
@@ -811,7 +811,7 @@ htsp_build_timerecentry(dvr_timerec_entry_t *dte, const char *method)
   htsmsg_add_str(out, "id",          idnode_uuid_as_str(&dte->dte_id));
   htsmsg_add_u32(out, "enabled",     dte->dte_enabled);
   htsmsg_add_u32(out, "daysOfWeek",  dte->dte_weekdays);
-  htsmsg_add_u32(out, "retention",   dte->dte_retention);
+  htsmsg_add_u32(out, "retention",   dvr_timerec_get_retention(dte));
   htsmsg_add_u32(out, "priority",    dte->dte_pri);
   htsmsg_add_s32(out, "start",       dte->dte_start);
   htsmsg_add_s32(out, "stop",        dte->dte_stop);