]> code.delx.au - pulseaudio/commitdiff
equalizer: Don't cleanup u->sink in sink_input_kill_cb yet
authorMatthijs Kooijman <matthijs@stdin.nl>
Mon, 24 Sep 2012 12:40:06 +0000 (14:40 +0200)
committerTanu Kaskinen <tanuk@iki.fi>
Tue, 25 Sep 2012 17:39:15 +0000 (20:39 +0300)
Previously, sink_input_kill_cb would cleanup u->sink an then unload the
module. However, during module unload, both save_state and dbus_done
tried to use u->sink, causing a segfault or assertion failure.

The segfault is easy to reproduce: Load module-equalizer-sink and then
press ctrl-C to terminate pulseaudio.

This commit removes the u->sink cleanup in sink_input_kill_cb, since
u->sink will be cleaned up by the module's pa__done as well (after it
has been used).

Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
src/modules/module-equalizer-sink.c

index 8b9075cd32ea82c2792a3570788ff2904c660cb1..269827943b60ea3b67dc9828bc0abdb27a2f348a 100644 (file)
@@ -849,8 +849,8 @@ static void sink_input_kill_cb(pa_sink_input *i) {
     pa_sink_input_unref(u->sink_input);
     u->sink_input = NULL;
 
-    pa_sink_unref(u->sink);
-    u->sink = NULL;
+    /* Leave u->sink alone for now, it will be cleaned up on module
+     * unload (and it is needed during unload as well). */
 
     pa_module_unload_request(u->module, TRUE);
 }