diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index f2826411..10e093c6 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -955,11 +955,21 @@ void mpegts_input_delete ( mpegts_input_t *mi, int delconf ) { mpegts_network_link_t *mnl; + mpegts_mux_instance_t *mmi, *mmi_next; /* Remove networks */ while ((mnl = LIST_FIRST(&mi->mi_networks))) mpegts_input_del_network(mnl); + /* Remove mux instances assigned to this input */ + mmi = LIST_FIRST(&mi->mi_mux_instances); + while (mmi) { + mmi_next = LIST_NEXT(mmi, mmi_input_link); + if (mmi->mmi_input == mi) + mmi->mmi_delete(mmi); + mmi = mmi_next; + } + /* Remove global refs */ idnode_unlink(&mi->ti_id); LIST_REMOVE(mi, ti_link);