]> code.delx.au - pulseaudio/commitdiff
loopback: Fix crashes
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>
Sun, 22 Jan 2012 13:11:23 +0000 (14:11 +0100)
committerColin Guthrie <colin@mageia.org>
Mon, 30 Jan 2012 11:17:08 +0000 (11:17 +0000)
Flush the message queue before tearing down, and dest==NULL is valid in case moving failed.

With this my module-loopback finally no longer causes frequent crashes.

src/modules/module-loopback.c

index 529125802f768546d98eaf2abef1f545132b4f03..1f2ef913667b296fd2cfc54e8b6f106f8a94b683 100644 (file)
@@ -136,6 +136,7 @@ static void teardown(struct userdata *u) {
     pa_assert(u);
     pa_assert_ctl_context();
 
+    pa_asyncmsgq_flush(u->asyncmsgq, 0);
     if (u->sink_input)
         pa_sink_input_unlink(u->sink_input);
 
@@ -360,6 +361,8 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) {
     pa_proplist *p;
     const char *n;
     struct userdata *u;
+    if (!dest)
+        return;
 
     pa_source_output_assert_ref(o);
     pa_assert_ctl_context();