[pulseaudio-discuss] [PATCH] sink, source: Fix a volume change leak

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Tue Mar 31 02:39:53 PDT 2015


When a sink or source is freed, there may be pending volume changes that
didn't get applied before the IO thread got torn down. Those pending
changes need to be freed.

The memory leak was reported here:
http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/23162/focus=23169

Reported-by: Alexander E. Patrakov <patrakov at gmail.com>
---
 src/pulsecore/sink.c   | 2 ++
 src/pulsecore/source.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index dafd1cc..f29a9b7 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -727,6 +727,8 @@ static void sink_free(pa_object *o) {
 
     pa_log_info("Freeing sink %u \"%s\"", s->index, s->name);
 
+    pa_sink_volume_change_flush(s);
+
     if (s->monitor_source) {
         pa_source_unref(s->monitor_source);
         s->monitor_source = NULL;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index eb27621..97f6cd9 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -662,6 +662,8 @@ static void source_free(pa_object *o) {
 
     pa_log_info("Freeing source %u \"%s\"", s->index, s->name);
 
+    pa_source_volume_change_flush(s);
+
     pa_idxset_free(s->outputs, NULL);
     pa_hashmap_free(s->thread_info.outputs);
 
-- 
1.9.3



More information about the pulseaudio-discuss mailing list