Add a function to retreive all available playback devices.

This commit is contained in:
ehofman
2009-11-28 13:31:04 +00:00
committed by Tim Moore
parent 27a6c72091
commit a0aaa23904
2 changed files with 35 additions and 0 deletions

View File

@@ -562,6 +562,32 @@ bool SGSoundMgr::load(string &samplepath, void **dbuf, int *fmt,
return true;
}
vector<const char*> SGSoundMgr::get_available_devices()
{
vector<const char*> devices;
const ALCchar *s;
if (alcIsExtensionPresent(NULL, "ALC_enumerate_all_EXT") == AL_TRUE) {
s = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
} else {
s = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
}
if (s) {
ALCchar *nptr, *ptr = (ALCchar *)s;
nptr = ptr;
while (*(nptr += strlen(ptr)+1) != 0)
{
devices.push_back(ptr);
ptr = nptr;
}
devices.push_back(ptr);
}
return devices;
}
bool SGSoundMgr::testForError(void *p, string s)
{

View File

@@ -59,6 +59,10 @@
# include <AL/alut.h>
#endif
#ifndef ALC_ALL_DEVICES_SPECIFIER
# define ALC_ALL_DEVICES_SPECIFIER 0x1013
#endif
#include <simgear/compiler.h>
#include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/math/SGMathFwd.hxx>
@@ -280,6 +284,11 @@ public:
bool load(string &samplepath, void **data, int *format,
size_t *size, int *freq );
/**
* Get a list of available playback devices.
*/
vector<const char*> get_available_devices();
private:
static int _alut_init;