mpegts: ensure muxes are properly stopped when unsubscribing svcs

This commit is contained in:
Adam Sutton 2013-09-05 23:48:02 +01:00
parent 997ccee895
commit 831990453e

View file

@ -145,6 +145,7 @@ mpegts_input_close_service ( mpegts_input_t *mi, mpegts_service_t *s )
s->s_dvb_active_input = NULL; s->s_dvb_active_input = NULL;
} }
pthread_mutex_unlock(&mi->mi_delivery_mutex); pthread_mutex_unlock(&mi->mi_delivery_mutex);
s->s_dvb_mux->mm_stop(s->s_dvb_mux, 0);
} }
static void static void
@ -189,11 +190,17 @@ mpegts_input_stopped_mux
static int static int
mpegts_input_has_subscription ( mpegts_input_t *mi, mpegts_mux_t *mm ) mpegts_input_has_subscription ( mpegts_input_t *mi, mpegts_mux_t *mm )
{ {
int ret = 0;
service_t *t; service_t *t;
LIST_FOREACH(t, &mi->mi_transports, s_active_link) pthread_mutex_lock(&mi->mi_delivery_mutex);
if (((mpegts_service_t*)t)->s_dvb_mux == mm) LIST_FOREACH(t, &mi->mi_transports, s_active_link) {
return 1; if (((mpegts_service_t*)t)->s_dvb_mux == mm) {
return 0; ret = 1;
break;
}
}
pthread_mutex_unlock(&mi->mi_delivery_mutex);
return ret;
} }
/* ************************************************************************** /* **************************************************************************