aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_control.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/output_control.c')
-rw-r--r--src/output_control.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/output_control.c b/src/output_control.c
index b5d983ae1..17edc3d72 100644
--- a/src/output_control.c
+++ b/src/output_control.c
@@ -118,9 +118,13 @@ audio_output_open(struct audio_output *ao,
if (ao->open &&
audio_format_equals(audio_format, &ao->in_audio_format)) {
- assert(ao->pipe == mp);
+ assert(ao->pipe == mp ||
+ (ao->always_on && ao->pause));
if (ao->pause) {
+ ao->chunk = NULL;
+ ao->pipe = mp;
+
/* unpause with the CANCEL command; this is a
hack, but suits well for forcing the thread
to leave the ao_pause() thread, and we need
@@ -266,6 +270,15 @@ void audio_output_close(struct audio_output *ao)
g_mutex_unlock(ao->mutex);
}
+void
+audio_output_release(struct audio_output *ao)
+{
+ if (ao->always_on)
+ audio_output_pause(ao);
+ else
+ audio_output_close(ao);
+}
+
void audio_output_finish(struct audio_output *ao)
{
audio_output_close(ao);