diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index ac24ad35..f460eb9e 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -225,6 +225,7 @@ mpegts_service_enlist(service_t *t, struct service_instance_list *sil, int flags { int p = 0, w; mpegts_service_t *s = (mpegts_service_t*)t; + mpegts_input_t *mi; mpegts_mux_t *m = s->s_dvb_mux; mpegts_mux_instance_t *mmi; @@ -238,18 +239,20 @@ mpegts_service_enlist(service_t *t, struct service_instance_list *sil, int flags if (mmi->mmi_tune_failed) continue; - if (!mmi->mmi_input->mi_is_enabled(mmi->mmi_input, mmi->mmi_mux, "service")) continue; + mi = mmi->mmi_input; + + if (!mi->mi_is_enabled(mi, mmi->mmi_mux, "service")) continue; /* Set weight to -1 (forced) for already active mux */ if (mmi->mmi_mux->mm_active == mmi) { w = -1; p = -1; } else { - w = mmi->mmi_input->mi_get_weight(mmi->mmi_input, flags); - p = mmi->mmi_input->mi_get_priority(mmi->mmi_input, mmi->mmi_mux, flags); + w = mi->mi_get_weight(mi, flags); + p = mi->mi_get_priority(mi, mmi->mmi_mux, flags); } - service_instance_add(sil, t, mmi->mmi_input->mi_instance, p, w); + service_instance_add(sil, t, mi->mi_instance, mi->mi_name, p, w); } } diff --git a/src/service.c b/src/service.c index 0783cc78..a3fbe8f6 100644 --- a/src/service.c +++ b/src/service.c @@ -685,8 +685,9 @@ service_find_instance TAILQ_FOREACH(si, sil, si_link) { const char *name = ch ? channel_get_name(ch) : NULL; if (!name && s) name = s->s_nicename; - tvhdebug("service", "%s si %p weight %d prio %d error %d", - name, si, si->si_weight, si->si_prio, si->si_error); + tvhdebug("service", "%s si %p %s weight %d prio %d error %d", + name, si, si->si_source, si->si_weight, si->si_prio, + si->si_error); } /* Already running? */ @@ -1470,8 +1471,8 @@ si_cmp(const service_instance_t *a, const service_instance_t *b) */ service_instance_t * service_instance_add(service_instance_list_t *sil, - struct service *s, int instance, int prio, - int weight) + struct service *s, int instance, + const char *source, int prio, int weight) { service_instance_t *si; @@ -1493,6 +1494,7 @@ service_instance_add(service_instance_list_t *sil, } si->si_weight = weight; si->si_prio = prio; + strncpy(si->si_source, source ?: "", sizeof(si->si_source)); TAILQ_INSERT_SORTED(sil, si, si_link, si_cmp); return si; } diff --git a/src/service.h b/src/service.h index fc926ef7..3097cb30 100644 --- a/src/service.h +++ b/src/service.h @@ -160,6 +160,8 @@ typedef struct service_instance { int si_mark; // For mark & sweep + char si_source[128]; + } service_instance_t; @@ -169,6 +171,7 @@ typedef struct service_instance { service_instance_t *service_instance_add(service_instance_list_t *sil, struct service *s, int instance, + const char *source, int prio, int weight);