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

David Henningsson david.henningsson at canonical.com
Tue Mar 31 05:58:45 PDT 2015


Ack!

On 2015-03-31 11:39, Tanu Kaskinen wrote:
> 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);
>
>

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the pulseaudio-discuss mailing list