Commit db4aa815 authored by Max Kellermann's avatar Max Kellermann

output_control: move code to ao_lock_command()

parent 319ba94a
...@@ -62,6 +62,18 @@ ao_command(struct audio_output *ao, enum audio_output_command cmd) ...@@ -62,6 +62,18 @@ ao_command(struct audio_output *ao, enum audio_output_command cmd)
ao_command_wait(ao); ao_command_wait(ao);
} }
/**
* Lock the #audio_output object and execute the command
* synchronously.
*/
static void
ao_lock_command(struct audio_output *ao, enum audio_output_command cmd)
{
g_mutex_lock(ao->mutex);
ao_command(ao, cmd);
g_mutex_unlock(ao->mutex);
}
void void
audio_output_enable(struct audio_output *ao) audio_output_enable(struct audio_output *ao)
{ {
...@@ -77,9 +89,7 @@ audio_output_enable(struct audio_output *ao) ...@@ -77,9 +89,7 @@ audio_output_enable(struct audio_output *ao)
audio_output_thread_start(ao); audio_output_thread_start(ao);
} }
g_mutex_lock(ao->mutex); ao_lock_command(ao, AO_COMMAND_ENABLE);
ao_command(ao, AO_COMMAND_ENABLE);
g_mutex_unlock(ao->mutex);
} }
void void
...@@ -96,9 +106,7 @@ audio_output_disable(struct audio_output *ao) ...@@ -96,9 +106,7 @@ audio_output_disable(struct audio_output *ao)
return; return;
} }
g_mutex_lock(ao->mutex); ao_lock_command(ao, AO_COMMAND_DISABLE);
ao_command(ao, AO_COMMAND_DISABLE);
g_mutex_unlock(ao->mutex);
} }
static void static void
...@@ -284,9 +292,7 @@ void audio_output_finish(struct audio_output *ao) ...@@ -284,9 +292,7 @@ void audio_output_finish(struct audio_output *ao)
assert(ao->fail_timer == NULL); assert(ao->fail_timer == NULL);
if (ao->thread != NULL) { if (ao->thread != NULL) {
g_mutex_lock(ao->mutex); ao_lock_command(ao, AO_COMMAND_KILL);
ao_command(ao, AO_COMMAND_KILL);
g_mutex_unlock(ao->mutex);
g_thread_join(ao->thread); g_thread_join(ao->thread);
} }
......
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