aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/output_thread.c')
-rw-r--r--src/output_thread.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/output_thread.c b/src/output_thread.c
index 4bc5d8fcb..c2f4f6d3c 100644
--- a/src/output_thread.c
+++ b/src/output_thread.c
@@ -63,6 +63,20 @@ static void ao_play(struct audio_output *ao)
ao_command_finished(ao);
}
+static void ao_pause(struct audio_output *ao)
+{
+ if (ao->plugin->pause != NULL) {
+ /* pause is supported */
+ ao_command_finished(ao);
+ ao->plugin->pause(ao->data);
+ } else {
+ /* pause is not supported - simply close the device */
+ ao->plugin->close(ao->data);
+ ao->open = 0;
+ ao_command_finished(ao);
+ }
+}
+
static void *audio_output_task(void *arg)
{
struct audio_output *ao = arg;
@@ -95,6 +109,10 @@ static void *audio_output_task(void *arg)
ao_play(ao);
break;
+ case AO_COMMAND_PAUSE:
+ ao_pause(ao);
+ break;
+
case AO_COMMAND_CANCEL:
ao->plugin->cancel(ao->data);
ao_command_finished(ao);