[Openal-devel] last call: ALC_EXT_disconnect

Chris Robinson chris.kcat at gmail.com
Wed Aug 19 12:18:52 PDT 2009


On Wednesday 19 August 2009 6:17:44 am Ryan C. Gordon wrote:
> > I don't think it's necessary to specify the behavior of
> > alcOpenDevice(NULL), as in question 3, as that's implementation/system
> > behavior that is not really affected by this extension. OSX already does
> > it without this extension, and having this extension doesn't guarantee
> > that behavior.
>
> This language was put in there specifically for Mac OS X. It's only in a
>   Q&A entry and not spec-enforced behaviour, though. It's just meant to
> be an assurance that if your OS already does this, it may continue to do
> so

I see. But then, I'm not sure it should be just alcOpenDevice(NULL) that can 
behave that way. I'm sure OSX has a string that opens the same device as the 
NULL device, and I believe PulseAudio can jump devices like that too, and that 
may not be the NULL device.

IMO, I think it should just be clarified that an ALCdevice isn't considered 
disconnected by OpenAL while the ALC_CONNECTED property returns ALC_TRUE. 
Whatever the implementation or system does is up to the implementation/system, 
but as long as ALC_CONNECTED is ALC_TRUE, everything will continue to function 
as normal regardless of physical (dis)connects.

> > And I don't like the idea of the enumeration strings only being valid
> > until the next query for them. IMO, the enumerations should change only
> > when the app calls something new, so existing behavior won't be changed
> > and risk breaking apps that rely on it.
>
> All four implementations in OpenAL's svn repository already do redetects
> during alcGetString() (OpenAL-Soft caches the unchanging value, but may
> do the initial detection in this call, depending on when the app called
> it), and so does mine. Keeping this string stable across queries breaks
> existing, albeit undefined, behaviour.

Hmm, okay. If possible then, something I'd like to have noted is that the 
device list may not update if there's devices open (capture or playback, 
disconnected or not). Re-probing devices could require unloading and reloading 
the backend libs, and you can't do that if there's a device open using the 
libs.


More information about the Openal-devel mailing list