[Openal-devel] ALC_ENUMERATE_ALL_EXT and pluggable sound devices

Chris Robinson chris.kcat at gmail.com
Thu Sep 24 04:27:32 PDT 2009


On Wednesday 23 September 2009 11:22:22 am Guilherme Balena Versiani wrote:
> Do you know where can I find an implementation that supports
> ALC_EXT_disconnect? Is this extension multiplatform (I mean it is
> available)?

The GIT version of OpenAL Soft does:
http://kcat.strangesoft.net/openal.html

The Windows backends don't really make use of it, though. I'm not sure how 
DSound reports an opened device being irrecoverably lost, so I wouldn't know 
what to watch for except errors that won't go away.. but I think that will get 
false positives from devices that can't be shared and are just temporarily 
taken by another process.

> Can you explain me how the ALC_EXT_disconnect combines with OpenAL32.lib
> Router (Windows Router)? The problem I reported involves to change it, even
> if the OpenAL driver implementation supports ALC_EXT_disconnect...

At its most fundamental level, it should work with the router. You open a 
device as normal, pass the handle to alcGetIntegerv with ALC_CONNECTED, and 
the router should pass it to the device's implementation which reports on the 
device's status. Calling alcIsExtensionPresent with the opened device will 
report if the extension is supported on that device.

For having the device strings change, the router will need to be modified to 
requery the DLLs on behalf of the app. Dan said that could happen in the near 
future. The individual drivers (wrap_oal.dll, ct_oal.dll, soft_oal.dll, etc) 
will also need to support updating the device list when queried. The upcoming 
1.9 release of OpenAL Soft will. Hopefully wrap_oal.dll (and ct_oal.dll as 
needed) can do that soon, too.

FWIW, the router itself can't directly support ALC_EXT_disconnect. The 
ALC_CONNECTED token only works on non-NULL device handles and the rest of the 
behavior is specific to the given device (nothing the router explicitly 
handles). The router just needs to not assume a static device list from the 
drivers.


More information about the Openal-devel mailing list