From 39a8ef2c1fdcea9ba101bac56bb94165e425d3b0 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 29 Mar 2018 22:04:55 +0200 Subject: [PATCH] esstream: preserve set_nicename on request in elementary_set_clean() --- src/esstream.c | 8 +++++--- src/esstream.h | 2 +- src/parsers/message.c | 4 ++-- src/service.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/esstream.c b/src/esstream.c index 5a6074129..bb7262584 100644 --- a/src/esstream.c +++ b/src/esstream.c @@ -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; } diff --git a/src/esstream.h b/src/esstream.h index a2872d6c4..31b0886cd 100644 --- a/src/esstream.h +++ b/src/esstream.h @@ -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); diff --git a/src/parsers/message.c b/src/parsers/message.c index 69c3de9b6..06eea53e0 100644 --- a/src/parsers/message.c +++ b/src/parsers/message.c @@ -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); } diff --git a/src/service.c b/src/service.c index 5352c2e38..286bbd48c 100644 --- a/src/service.c +++ b/src/service.c @@ -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); -- 2.47.2