aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/output_all.c15
-rw-r--r--src/output_control.c6
-rw-r--r--src/output_control.h4
3 files changed, 19 insertions, 6 deletions
diff --git a/src/output_all.c b/src/output_all.c
index e360fd5ae..eca4d191c 100644
--- a/src/output_all.c
+++ b/src/output_all.c
@@ -163,16 +163,25 @@ audio_output_all_reset_reopen(void)
}
}
-static void
+/**
+ * Opens all output devices which are enabled, but closed.
+ *
+ * @return true if there is at least open output device which is open
+ */
+static bool
audio_output_all_update(void)
{
unsigned int i;
+ bool ret = false;
if (!audio_format_defined(&input_audio_format))
- return;
+ return false;
for (i = 0; i < num_audio_outputs; ++i)
- audio_output_update(&audio_outputs[i], &input_audio_format);
+ ret = ret || audio_output_update(&audio_outputs[i],
+ &input_audio_format);
+
+ return ret;
}
bool
diff --git a/src/output_control.c b/src/output_control.c
index c2b7c56d4..a9c41f053 100644
--- a/src/output_control.c
+++ b/src/output_control.c
@@ -94,16 +94,18 @@ audio_output_open(struct audio_output *ao,
return ao->open;
}
-void
+bool
audio_output_update(struct audio_output *ao,
const struct audio_format *audio_format)
{
if (ao->enabled) {
if (ao->fail_timer == NULL ||
g_timer_elapsed(ao->fail_timer, NULL) > REOPEN_AFTER)
- audio_output_open(ao, audio_format);
+ return audio_output_open(ao, audio_format);
} else if (audio_output_is_open(ao))
audio_output_close(ao);
+
+ return false;
}
void
diff --git a/src/output_control.h b/src/output_control.h
index a4287646c..dadda860d 100644
--- a/src/output_control.h
+++ b/src/output_control.h
@@ -45,8 +45,10 @@ audio_output_open(struct audio_output *ao,
/**
* Opens or closes the device, depending on the "enabled" flag.
+ *
+ * @return true if the device is open
*/
-void
+bool
audio_output_update(struct audio_output *ao,
const struct audio_format *audio_format);