]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: save real start/stop times for filename
authorJaroslav Kysela <perex@perex.cz>
Thu, 14 Apr 2016 15:07:49 +0000 (17:07 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 14 Apr 2016 15:07:49 +0000 (17:07 +0200)
src/dvr/dvr_db.c
src/dvr/dvr_rec.c

index a30ef82e82c6a5bcaabbd10a182cdbd48b3900b1..a94387b5f16f6fe7774d4af5b9bd4c1446086f23 100644 (file)
@@ -2029,6 +2029,7 @@ dvr_entry_class_save(idnode_t *self, char *filename, size_t fsize)
   htsmsg_field_t *f;
   char ubuf[UUID_HEX_SIZE];
   const char *filename2;
+  int64_t s64;
 
   idnode_save(&de->de_id, m);
   if (de->de_files) {
@@ -2042,6 +2043,10 @@ dvr_entry_class_save(idnode_t *self, char *filename, size_t fsize)
           htsmsg_add_str(c, "filename", filename2);
           if (info)
             htsmsg_add_msg(c, "info", htsmsg_copy(info));
+          if (!htsmsg_get_s64(e, "start", &s64))
+            htsmsg_add_s64(c, "start", s64);
+          if (!htsmsg_get_s64(e, "stop", &s64))
+            htsmsg_add_s64(c, "stop", s64);
           htsmsg_add_msg(l, NULL, c);
         }
       }
index 4f4a00ac4e78bb2ef164455d4ae0fad6dee86ce7..84f9e513eefb34da02297dd23fb095b3f1aba691 100644 (file)
@@ -1060,6 +1060,7 @@ dvr_rec_start(dvr_entry_t *de, const streaming_start_t *ss)
   if ((f = htsmsg_field_last(de->de_files)) != NULL &&
       (e = htsmsg_field_get_map(f)) != NULL) {
     htsmsg_set_msg(e, "info", info);
+    htsmsg_set_s64(e, "start", gclk());
   } else {
     htsmsg_destroy(info);
   }
@@ -1571,6 +1572,8 @@ static void
 dvr_thread_epilog(dvr_entry_t *de, const char *dvr_postproc)
 {
   profile_chain_t *prch = de->de_chain;
+  htsmsg_t *e;
+  htsmsg_field_t *f;
 
   if (prch == NULL)
     return;
@@ -1579,6 +1582,12 @@ dvr_thread_epilog(dvr_entry_t *de, const char *dvr_postproc)
   muxer_destroy(prch->prch_muxer);
   prch->prch_muxer = NULL;
 
+  if ((f = htsmsg_field_last(de->de_files)) != NULL &&
+      (e = htsmsg_field_get_map(f)) != NULL)
+    htsmsg_set_s64(e, "stop", gclk());
+
   if(dvr_postproc && dvr_postproc[0])
     dvr_spawn_cmd(de, dvr_postproc, NULL, 0);
+
+  idnode_changed(&de->de_id);
 }