diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/output_all.c | 15 | ||||
-rw-r--r-- | src/output_control.c | 6 | ||||
-rw-r--r-- | src/output_control.h | 4 |
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); |