diff options
author | Stijn Buys <ingar@osirion.org> | 2008-05-18 21:52:13 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-05-18 21:52:13 +0000 |
commit | 4a4a5473b82d1f5b6f654cabac99272bce89854b (patch) | |
tree | fc782442ba0a650be5dad4023da401928899cd80 /src/audio | |
parent | c6d7e54f4b3e18587e96a3aeb0f290becd93cbdc (diff) |
Forgot to add these
Diffstat (limited to 'src/audio')
-rw-r--r-- | src/audio/sources.cc | 43 | ||||
-rw-r--r-- | src/audio/sources.h | 40 |
2 files changed, 83 insertions, 0 deletions
diff --git a/src/audio/sources.cc b/src/audio/sources.cc new file mode 100644 index 0000000..90a79fa --- /dev/null +++ b/src/audio/sources.cc @@ -0,0 +1,43 @@ +/* + audio/sources.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#include "audio/sources.h" +#include "sys/sys.h" + +namespace audio +{ + +ALuint Sources::sources[MAXSOURCES]; +bool Sources::source_available[MAXSOURCES]; + +void Sources::init() +{ + int error; + clear(); + + alGenSources(MAXSOURCES, sources); + + if ((error = alGetError()) != AL_NO_ERROR) { + con_warn << "Error " << error << " initializing OpenAL sources!" << std::endl; + return; + } + source_available[0] = true; +} + +void Sources::shutdown() +{ + alDeleteSources(MAXSOURCES, sources); + clear(); +} + +void Sources::clear() +{ + memset(sources,0, sizeof(sources)); + memset(source_available, 0 , sizeof(source_available)); + +} + +} diff --git a/src/audio/sources.h b/src/audio/sources.h new file mode 100644 index 0000000..405b944 --- /dev/null +++ b/src/audio/sources.h @@ -0,0 +1,40 @@ +/* + audio/source.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_AUDIO_SOURCES_H__ +#define __INCLUDED_AUDIO_SOURCES_H__ + +#include "AL/al.h" +#include "AL/alc.h" + +#include <string> +#include <map> + +namespace audio { + +const size_t MAXSOURCES = 128; + +/// OpenAL sources wrapper class +class Sources { +public: + static void init(); + static void shutdown(); + + static bool available(size_t index) { return source_available[index]; } + + /// the sources for user interface sounds + static inline ALuint ui() { return sources[0]; } + +private: + static void clear(); + + static ALuint sources[MAXSOURCES]; + static bool source_available[MAXSOURCES]; +}; + +} + +#endif // __INCLUDED_AUDIO_SOURCES_H__ |