From 7d88c37e5be514cc83d5a4ed75292a17dc8a52a0 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 2 Jun 2020 17:13:53 +0200 Subject: [PATCH] alsa-seq: clear the midi event queue on close to avoid leak --- spa/plugins/alsa/alsa-seq.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spa/plugins/alsa/alsa-seq.c b/spa/plugins/alsa/alsa-seq.c index f5065999e..5fc269ce0 100644 --- a/spa/plugins/alsa/alsa-seq.c +++ b/spa/plugins/alsa/alsa-seq.c @@ -137,6 +137,13 @@ static int init_stream(struct seq_state *state, enum spa_direction direction) return 0; } +static int uninit_stream(struct seq_state *state, enum spa_direction direction) +{ + struct seq_stream *stream = &state->streams[direction]; + snd_midi_event_free(stream->codec); + return 0; +} + static void init_ports(struct seq_state *state) { snd_seq_addr_t addr; @@ -324,6 +331,9 @@ int spa_alsa_seq_close(struct seq_state *state) seq_close(state, &state->sys); seq_close(state, &state->event); + uninit_stream(state, SPA_DIRECTION_INPUT); + uninit_stream(state, SPA_DIRECTION_OUTPUT); + spa_system_close(state->data_system, state->timerfd); state->opened = false;