]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: handle properly subtitle update and coding fixes
authorJaroslav Kysela <perex@perex.cz>
Fri, 29 May 2015 16:02:19 +0000 (18:02 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 29 May 2015 16:02:19 +0000 (18:02 +0200)
src/dvr/dvr.h
src/dvr/dvr_db.c

index d772e80d4c7073582610ed1c2b5eba3040d2ccd8..55f5977b318ca0d08c140f11bae9f808b17be05f 100644 (file)
@@ -438,7 +438,8 @@ dvr_entry_t *
 dvr_entry_create_htsp( const char *dvr_config_uuid,
                        channel_t *ch, time_t start, time_t stop,
                        time_t start_extra, time_t stop_extra,
-                       const char *title, const char* subtitle, const char *description,
+                       const char *title, const char *subtitle,
+                       const char *description,
                        const char *lang, epg_genre_t *content_type,
                        const char *owner, const char *creator,
                        dvr_autorec_entry_t *dae,
@@ -447,9 +448,10 @@ dvr_entry_create_htsp( const char *dvr_config_uuid,
 
 dvr_entry_t *
 dvr_entry_update( dvr_entry_t *de,
-                  const char* de_title, const char* de_subtitle, const char *de_desc, const char *lang,
-                  time_t de_start, time_t de_stop,
-                  time_t de_start_extra, time_t de_stop_extra,
+                  const char *title, const char *subtitle,
+                  const char *desc, const char *lang,
+                  time_t start, time_t stop,
+                  time_t start_extra, time_t stop_extra,
                   dvr_prio_t pri, int retention );
 
 void dvr_destroy_by_channel(channel_t *ch, int delconf);
index d7effc58cedabc25351ae6f789d52f545ad604ee..20a507e819bc253a54c5b77dda69ee034e9705bb 100644 (file)
@@ -933,9 +933,9 @@ dvr_timer_expire(void *aux)
 }
 
 static dvr_entry_t *_dvr_entry_update
-  ( dvr_entry_t *de, epg_broadcast_t *e, const char *title, const charsubtitle,
+  ( dvr_entry_t *de, epg_broadcast_t *e, const char *title, const char *subtitle,
     const char *desc, const char *lang, time_t start, time_t stop,
-    time_t start_extra, time_t stop_extra,  dvr_prio_t pri, int retention )
+    time_t start_extra, time_t stop_extra, dvr_prio_t pri, int retention )
 {
   char buf[40];
   int save = 0, updated = 0;
@@ -1003,7 +1003,11 @@ static dvr_entry_t *_dvr_entry_update
   }
 
   /* Subtitle*/
-  if (subtitle) {
+  if (e && e->episode && e->episode->subtitle) {
+    if (de->de_subtitle) lang_str_destroy(de->de_subtitle);
+    de->de_subtitle = lang_str_copy(e->episode->subtitle);
+    save = 1;
+  } else if (subtitle) {
     if (!de->de_subtitle) de->de_subtitle = lang_str_create();
     save = lang_str_add(de->de_subtitle, subtitle, lang, 1);
   }
@@ -1029,7 +1033,7 @@ static dvr_entry_t *_dvr_entry_update
     de->de_desc = lang_str_copy(e->episode->summary);
   } else if (desc) {
     if (!de->de_desc) de->de_desc = lang_str_create();
-    save = lang_str_add(de->de_desc, title, lang, 1);
+    save = lang_str_add(de->de_desc, desc, lang, 1);
   }
 
   /* Genre */
@@ -1074,14 +1078,15 @@ dosave:
  */
 dvr_entry_t * 
 dvr_entry_update
-  (dvr_entry_t *de,
-   const char* de_title, const char* de_subtitle, const char *de_desc, const char *lang,
-   time_t de_start, time_t de_stop,
-   time_t de_start_extra, time_t de_stop_extra,
-   dvr_prio_t pri, int retention)
-{
-  return _dvr_entry_update(de, NULL, de_title, de_subtitle, de_desc, lang,
-                           de_start, de_stop, de_start_extra, de_stop_extra,
+  ( dvr_entry_t *de,
+    const char *title, const char *subtitle,
+    const char *desc, const char *lang,
+    time_t start, time_t stop,
+    time_t start_extra, time_t stop_extra,
+    dvr_prio_t pri, int retention )
+{
+  return _dvr_entry_update(de, NULL, title, subtitle, desc, lang,
+                           start, stop, start_extra, stop_extra,
                            pri, retention);
 }