From 60f7ff3de594ef6b54a61b6ad630819ce026c760 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
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(+)

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