]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
esstream: preserve set_nicename on request in elementary_set_clean()
authorJaroslav Kysela <perex@perex.cz>
Thu, 29 Mar 2018 20:04:55 +0000 (22:04 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 29 Mar 2018 20:04:55 +0000 (22:04 +0200)
src/esstream.c
src/esstream.h
src/parsers/message.c
src/service.c

index 5a6074129bac15f3d03aacd340934ab6067f98d7..bb72625847f814a78811f40e5b1d0609e80cab91 100644 (file)
@@ -62,15 +62,17 @@ void elementary_set_init
 /**
  *
  */
-void elementary_set_clean(elementary_set_t *set, service_t *t)
+void elementary_set_clean(elementary_set_t *set, service_t *t, int keep_nicename)
 {
   elementary_stream_t *st;
 
   TAILQ_INIT(&set->set_filter);
   while ((st = TAILQ_FIRST(&set->set_all)) != NULL)
     elementary_set_stream_destroy(set, st);
-  free(set->set_nicename);
-  set->set_nicename = NULL;
+  if (!keep_nicename) {
+    free(set->set_nicename);
+    set->set_nicename = NULL;
+  }
   set->set_service = t;
 }
 
index a2872d6c48c9b0a204dd82b521143bc363b916f7..31b0886cded6113ea19cc3c9b8da27c949cf85b7 100644 (file)
@@ -161,7 +161,7 @@ struct elementary_set {
  */
 void elementary_set_init
   (elementary_set_t *set, int subsys, const char *nicename, service_t *t);
-void elementary_set_clean(elementary_set_t *set, service_t *t);
+void elementary_set_clean(elementary_set_t *set, service_t *t, int keep_nicename);
 void elementary_set_update_nicename(elementary_set_t *set, const char *nicename);
 void elementary_set_clean_streams(elementary_set_t *set);
 void elementary_set_stream_destroy(elementary_set_t *set, elementary_stream_t *es);
index 69c3de9b64741dd26b9bba8ee14ab344b01b54fd..06eea53e03e11cc96f45c927d799e435647002b4 100644 (file)
@@ -292,7 +292,7 @@ static void parser_input_start(parser_t *prs, streaming_message_t *sm)
 
   TAILQ_FOREACH(es, &set->set_all, es_link)
     parser_clean_es((parser_es_t *)es);
-  elementary_set_clean(set, prs->prs_service);
+  elementary_set_clean(set, prs->prs_service, 1);
 
   elementary_stream_create_from_start(set, ss, sizeof(parser_es_t));
   TAILQ_FOREACH(es, &set->set_all, es_link) {
@@ -390,6 +390,6 @@ parser_destroy(streaming_target_t *pad)
     if (pes->es_psi.mt_name)
       dvb_table_parse_done(&pes->es_psi);
   }
-  elementary_set_clean(&prs->prs_components, NULL);
+  elementary_set_clean(&prs->prs_components, NULL, 0);
   free(prs);
 }
index 5352c2e3879d1c0e92d7122e172187b62e907d59..286bbd48c9e469176b3b9ed4d9d434be5142505d 100644 (file)
@@ -608,7 +608,7 @@ service_destroy(service_t *t, int delconf)
 
   t->s_status = SERVICE_ZOMBIE;
 
-  elementary_set_clean(&t->s_components, NULL);
+  elementary_set_clean(&t->s_components, NULL, 0);
 
   if (t->s_hbbtv) {
     htsmsg_destroy(t->s_hbbtv);