[openal] Problem putting Windows system to sleep while OpenAL is initialized but idle
chris.kcat at gmail.com
Thu Jul 14 20:31:37 EDT 2016
On 07/14/2016 04:38 PM, Kirk Baker wrote:
> The above is fairly straightforward, I expect. Is there some way for
> us to "pause" OpenAL such that it won't deny system sleep? On
> Windows, powercfg -requests shows
> [DRIVER] Realtek High Definition Audio (HDAUDIO \ FUNC_01 & VEN_10EC & DEV_0889 & SUBSYS_1458A022 & REV_1000 \ 4 & 36360a8e & 0 & 0201)
> An audio stream is currently in use.
> I am guessing that as soon as we initialize as above, an audio stream
> is started up and mixes in silence, keeping things ready for
> low-latency playback. If we could "pause" this when our app is
> switched out, or when a system sleep event raises, or when we know
> we're not trying to play sounds then I'd expect the system to be able
> to sleep.
This is basically the issue, yes. OpenAL Soft starts up a playback
stream on the system when the context is created and keeps feeding it
audio for a variety of reasons.
There are a couple ways to "pause" playback. The surest way is to use
the ALC_SOFT_pause_device extension which provides the
alcDevicePauseSOFT and alcDeviceResumeSOFT functions, which pause and
resume the device respectively.
Alternatively, you can try destroying all contexts (and associated
sources, buffers, etc). OpenAL Soft will generally try to stop playback
when there's no contexts on the device. That's an implementation detail,
though, and isn't guaranteed to work.
More information about the openal