From 60f7ff3de594ef6b54a61b6ad630819ce026c760 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 31 Aug 2011 20:55:49 +0200 Subject: output/pulse: reset callbacks before closing stream/context Fixes assertion failure when a stream callback is invoked too late after a format change. --- src/output/pulse_output_plugin.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/output') diff --git a/src/output/pulse_output_plugin.c b/src/output/pulse_output_plugin.c index 8fcf26992..34d736546 100644 --- a/src/output/pulse_output_plugin.c +++ b/src/output/pulse_output_plugin.c @@ -233,6 +233,13 @@ pulse_output_delete_stream(struct pulse_output *po) assert(po != NULL); assert(po->stream != NULL); +#if PA_CHECK_VERSION(0,9,8) + pa_stream_set_suspended_callback(po->stream, NULL, NULL); +#endif + + pa_stream_set_state_callback(po->stream, NULL, NULL); + pa_stream_set_write_callback(po->stream, NULL, NULL); + pa_stream_disconnect(po->stream); pa_stream_unref(po->stream); po->stream = NULL; @@ -247,6 +254,9 @@ pulse_output_delete_context(struct pulse_output *po) assert(po != NULL); assert(po->context != NULL); + pa_context_set_state_callback(po->context, NULL, NULL); + pa_context_set_subscribe_callback(po->context, NULL, NULL); + pa_context_disconnect(po->context); pa_context_unref(po->context); po->context = NULL; -- cgit v1.2.3