X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/67895023d60fc492720d2f575045ed0173948947..d76bbdea349bf3856172ce9599e657d566e91162:/lib/uaudio.h diff --git a/lib/uaudio.h b/lib/uaudio.h index aa686d0..d6376c8 100644 --- a/lib/uaudio.h +++ b/lib/uaudio.h @@ -34,6 +34,15 @@ extern size_t uaudio_sample_size; * @param max_samples How many samples to supply * @param userdata As passed to uaudio_open() * @return Number of samples filled + * + * This function should not block if possible (better to fill the buffer with + * 0s) and should definitely not block indefinitely. This great caution with + * any locks or syscalls! In particular avoid it taking a lock that may be + * held while any of the @ref uaudio members are called. + * + * If it's more convenient, it's OK to return less than the maximum number of + * samples (including 0) provided you expect to be called again for more + * samples immediately. */ typedef size_t uaudio_callback(void *buffer, size_t max_samples, @@ -127,7 +136,17 @@ void uaudio_thread_start(uaudio_callback *callback, void *userdata, uaudio_playcallback *playcallback, size_t min, - size_t max); + size_t max, + unsigned flags); + +/** @brief Fake pauses + * + * This flag is used for audio backends that cannot sensibly be paused. + * The thread support code will supply silence while deactivated in this + * case. + */ +#define UAUDIO_THREAD_FAKE_PAUSE 0x00000001 + void uaudio_thread_stop(void); void uaudio_thread_activate(void); void uaudio_thread_deactivate(void);