From 4a4a5473b82d1f5b6f654cabac99272bce89854b Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 18 May 2008 21:52:13 +0000 Subject: Forgot to add these --- src/audio/sources.cc | 43 +++++++++++++++++++++++++++++++++++++++++++ src/audio/sources.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/audio/sources.cc create mode 100644 src/audio/sources.h (limited to 'src/audio') 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 +#include + +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__ -- cgit v1.2.3