module-loopback: Reset process_msg callbacks in teardown
authorDavid Henningsson <david.henningsson@canonical.com>
Tue, 3 Apr 2012 16:56:21 +0000 (18:56 +0200)
committerDavid Henningsson <david.henningsson@canonical.com>
Wed, 4 Apr 2012 07:04:12 +0000 (09:04 +0200)
Make sure we can't be called into by remaining references to
sink-inputs and source-outputs after we have unloaded, as
that will likely lead to segfaults.

Thanks to Tanu for providing valuable input on this patch.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
src/modules/module-loopback.c

index 0d65682..1a69445 100644 (file)
@@ -152,11 +152,13 @@ static void teardown(struct userdata *u) {
         pa_source_output_unlink(u->source_output);
 
     if (u->sink_input) {
+        u->sink_input->parent.process_msg = pa_sink_input_process_msg;
         pa_sink_input_unref(u->sink_input);
         u->sink_input = NULL;
     }
 
     if (u->source_output) {
+        u->source_output->parent.process_msg = pa_source_output_process_msg;
         pa_source_output_unref(u->source_output);
         u->source_output = NULL;
     }