diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/output_all.c | 22 | ||||
-rw-r--r-- | src/output_control.c | 12 | ||||
-rw-r--r-- | src/output_control.h | 10 |
3 files changed, 23 insertions, 21 deletions
diff --git a/src/output_all.c b/src/output_all.c index 551736a41..4e0b2eb22 100644 --- a/src/output_all.c +++ b/src/output_all.c @@ -206,29 +206,13 @@ static void audio_output_wait_all(void) } /** - * Signal the audio output if it is open, and set the "allow_play" - * flag. This function locks the mutex. - */ -static void -audio_output_lock_signal(struct audio_output *ao) -{ - g_mutex_lock(ao->mutex); - - ao->allow_play = true; - if (audio_output_is_open(ao)) - g_cond_signal(ao->cond); - - g_mutex_unlock(ao->mutex); -} - -/** * Signals all audio outputs which are open. */ static void -audio_output_signal_all(void) +audio_output_allow_play_all(void) { for (unsigned i = 0; i < num_audio_outputs; ++i) - audio_output_lock_signal(&audio_outputs[i]); + audio_output_allow_play(&audio_outputs[i]); } static void @@ -533,7 +517,7 @@ audio_output_all_cancel(void) /* the audio outputs are now waiting for a signal, to synchronize the cleared music pipe */ - audio_output_signal_all(); + audio_output_allow_play_all(); /* invalidate elapsed_time */ diff --git a/src/output_control.c b/src/output_control.c index 14976dbfb..f8c5cd873 100644 --- a/src/output_control.c +++ b/src/output_control.c @@ -268,6 +268,18 @@ void audio_output_cancel(struct audio_output *ao) } void +audio_output_allow_play(struct audio_output *ao) +{ + g_mutex_lock(ao->mutex); + + ao->allow_play = true; + if (audio_output_is_open(ao)) + g_cond_signal(ao->cond); + + g_mutex_unlock(ao->mutex); +} + +void audio_output_release(struct audio_output *ao) { if (ao->always_on) diff --git a/src/output_control.h b/src/output_control.h index 2b88d4103..f0e317d6e 100644 --- a/src/output_control.h +++ b/src/output_control.h @@ -72,11 +72,17 @@ audio_output_drain_async(struct audio_output *ao); /** * Clear the "allow_play" flag and send the "CANCEL" command - * asynchronously. To finish the operation, the caller has to set the - * "allow_play" flag and signal the thread. + * asynchronously. To finish the operation, the caller has to call + * audio_output_allow_play(). */ void audio_output_cancel(struct audio_output *ao); +/** + * Set the "allow_play" and signal the thread. + */ +void +audio_output_allow_play(struct audio_output *ao); + void audio_output_close(struct audio_output *ao); /** |