Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts: another fix for linked inputs
  • Loading branch information
perexg committed May 27, 2015
1 parent 1abfaae commit 0b9cbdb
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 deletions.
4 changes: 2 additions & 2 deletions src/input/mpegts.h
Expand Up @@ -830,7 +830,7 @@ mpegts_service_t *mpegts_mux_find_service(mpegts_mux_t *ms, uint16_t sid);
void mpegts_mux_instance_delete ( tvh_input_instance_t *tii );

int mpegts_mux_instance_start
( mpegts_mux_instance_t **mmiptr );
( mpegts_mux_instance_t **mmiptr, service_t *t );

int mpegts_mux_instance_weight ( mpegts_mux_instance_t *mmi );

Expand All @@ -847,7 +847,7 @@ int mpegts_mux_subscribe(mpegts_mux_t *mm, mpegts_input_t *mi,
const char *name, int weight, int flags);
void mpegts_mux_unsubscribe_by_name(mpegts_mux_t *mm, const char *name);

void mpegts_mux_unsubscribe_linked(mpegts_input_t *mi);
void mpegts_mux_unsubscribe_linked(mpegts_input_t *mi, service_t *t);

void mpegts_mux_scan_done ( mpegts_mux_t *mm, const char *buf, int res );

Expand Down
4 changes: 2 additions & 2 deletions src/input/mpegts/mpegts_input.c
Expand Up @@ -152,9 +152,9 @@ mpegts_input_class_linked_set ( void *self, const void *val )
if (mi2) {
free(mi2->mi_linked);
mi2->mi_linked = NULL;
mpegts_mux_unsubscribe_linked(mi2);
mpegts_mux_unsubscribe_linked(mi2, NULL);
}
mpegts_mux_unsubscribe_linked(mi);
mpegts_mux_unsubscribe_linked(mi, NULL);
if (val && ((char *)val)[0]) {
mi->mi_linked = strdup((char *)val);
mi2 = mpegts_input_find((char *)val);
Expand Down
11 changes: 6 additions & 5 deletions src/input/mpegts/mpegts_mux.c
Expand Up @@ -200,7 +200,7 @@ mpegts_mux_subscribe_linked

void
mpegts_mux_unsubscribe_linked
( mpegts_input_t *mi )
( mpegts_input_t *mi, service_t *t )
{
th_subscription_t *ths, *ths_next;

Expand All @@ -209,15 +209,16 @@ mpegts_mux_unsubscribe_linked

for (ths = LIST_FIRST(&subscriptions); ths; ths = ths_next) {
ths_next = LIST_NEXT(ths, ths_global_link);
if (ths->ths_source == (tvh_input_t *)mi && !strcmp(ths->ths_title, "keep"))
if (ths->ths_source == (tvh_input_t *)mi && !strcmp(ths->ths_title, "keep") &&
ths->ths_service != t)
subscription_unsubscribe(ths, 0);
}
}
}

int
mpegts_mux_instance_start
( mpegts_mux_instance_t **mmiptr )
( mpegts_mux_instance_t **mmiptr, service_t *t )
{
int r;
char buf[256], buf2[256];
Expand All @@ -244,7 +245,7 @@ mpegts_mux_instance_start
tvhinfo("mpegts", "%s - tuning on %s", buf, buf2);

if (mi->mi_linked)
mpegts_mux_unsubscribe_linked(mi);
mpegts_mux_unsubscribe_linked(mi, t);

r = mi->mi_warm_mux(mi, mmi);
if (r) return r;
Expand Down Expand Up @@ -719,7 +720,7 @@ mpegts_mux_stop ( mpegts_mux_t *mm, int force, int reason )
if (mmi2 && !mpegts_mux_has_subscribers(mmi2->mmi_mux, buf2)) {
s = mi2->mi_linked;
mi2->mi_linked = NULL;
mpegts_mux_unsubscribe_linked(mi2);
mpegts_mux_unsubscribe_linked(mi2, NULL);
mi2->mi_linked = s;
} else {
if (!force) {
Expand Down
2 changes: 1 addition & 1 deletion src/input/mpegts/mpegts_service.c
Expand Up @@ -319,7 +319,7 @@ mpegts_service_start(service_t *t, int instance, int flags)
return SM_CODE_UNDEFINED_ERROR;

/* Start Mux */
r = mpegts_mux_instance_start(&mmi);
r = mpegts_mux_instance_start(&mmi, t);

/* Start */
if (!r) {
Expand Down

0 comments on commit 0b9cbdb

Please sign in to comment.