sink, source: Fix a volume change leak

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@gmail.com>
This commit is contained in:
Tanu Kaskinen 2015-03-31 12:39:53 +03:00
parent 30b6c111a6
commit 1f659cc836
2 changed files with 4 additions and 0 deletions

View file

@ -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;

View file

@ -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);