if (!mi->mi_stop) {
TAILQ_INSERT_TAIL(&mi->mi_input_queue, mp, mp_link);
pthread_cond_signal(&mi->mi_input_cond);
+ } else {
+ free(mp);
}
pthread_mutex_unlock(&mi->mi_input_lock);
}
mpegts_mux_instance_t *mmi = mm->mm_active;
mpegts_pid_t *last_mp = NULL;
+ assert(mmi);
+
mi->mi_live = 1;
/* Process */
/* Stop possible recursion */
if (!mmi) return;
- /* Clear */
- mm->mm_active = NULL;
-
mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhdebug("mpegts", "%s - stopping mux", buf);
mi->mi_stop_mux(mi, mmi);
mi->mi_stopped_mux(mi, mmi);
+ assert(mm->mm_active == NULL);
+
/* Flush all tables */
tvhtrace("mpegts", "%s - flush tables", buf);
mpegts_table_flush_all(mm);