diff options
Diffstat (limited to '')
-rw-r--r-- | src/output_all.c | 12 | ||||
-rw-r--r-- | src/output_all.h | 11 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/output_all.c b/src/output_all.c index 2e7d3a720..870d8aed3 100644 --- a/src/output_all.c +++ b/src/output_all.c @@ -408,6 +408,18 @@ audio_output_all_check(void) return 0; } +bool +audio_output_all_wait(unsigned threshold) +{ + if (audio_output_all_check() < threshold) + return true; + + /* XXX synchronize in a better way */ + g_usleep(1000); + + return audio_output_all_check() < threshold; +} + void audio_output_all_pause(void) { diff --git a/src/output_all.h b/src/output_all.h index 197a0bfd2..2a09514b2 100644 --- a/src/output_all.h +++ b/src/output_all.h @@ -105,6 +105,17 @@ unsigned audio_output_all_check(void); /** + * Checks if the size of the #music_pipe is below the #threshold. If + * not, it attempts to synchronize with all output threads, and waits + * until another #music_chunk is finished. + * + * @param threshold the maximum number of chunks in the pipe + * @return true if there are less than #threshold chunks in the pipe + */ +bool +audio_output_all_wait(unsigned threshold); + +/** * Puts all audio outputs into pause mode. Most implementations will * simply close it then. */ |