]> 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 18:52:20 +0000 (20:52 +0200)
src/dvr/dvr.h
src/dvr/dvr_db.c

index 0ccadc388f48ba35deef9b71633e58292bfa9569..aff07dde8f2c9e35fce6701faeaf97b828002969 100644 (file)
@@ -434,7 +434,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,
@@ -443,9 +444,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 7b6424a00393262378bb02646617bc8eb8921cf3..9aabe67e5471478a5c3028a4c52527ab91301cae 100644 (file)
@@ -897,9 +897,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;
@@ -967,7 +967,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);
   }
@@ -993,7 +997,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 */
@@ -1038,14 +1042,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);
 }