Commit bd8ecba4 authored by Max Kellermann's avatar Max Kellermann

output_thread: consistently (de)initialize pcm_convert_state

Fix a memory leak: it was not guaranteed that pcm_convert_deinit() was called for each pcm_convert_init(). This patch always (de)initializes the pcm_convert library when the audio_output.open flag is flipped.
parent 61e30759
......@@ -91,6 +91,7 @@ static void ao_pause(struct audio_output *ao)
} else {
/* pause is not supported - simply close the device */
ao->plugin->close(ao->data);
pcm_convert_deinit(&ao->convert_state);
ao->open = false;
ao_command_finished(ao);
}
......@@ -109,14 +110,14 @@ static gpointer audio_output_task(gpointer arg)
case AO_COMMAND_OPEN:
assert(!ao->open);
pcm_convert_init(&ao->convert_state);
ret = ao->plugin->open(ao->data,
&ao->out_audio_format);
assert(!ao->open);
if (ret == true)
if (ret) {
pcm_convert_init(&ao->convert_state);
ao->open = true;
else
} else
ao->reopen_after = time(NULL) + REOPEN_AFTER;
ao_command_finished(ao);
......@@ -127,6 +128,7 @@ static gpointer audio_output_task(gpointer arg)
ao->plugin->cancel(ao->data);
ao->plugin->close(ao->data);
pcm_convert_deinit(&ao->convert_state);
ao->open = false;
ao_command_finished(ao);
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment