diff options
Diffstat (limited to 'src/audio/sources.cc')
-rw-r--r-- | src/audio/sources.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/audio/sources.cc b/src/audio/sources.cc index 2c67304..3a6b3fc 100644 --- a/src/audio/sources.cc +++ b/src/audio/sources.cc @@ -53,4 +53,30 @@ void Sources::clear() } +size_t Sources::get() +{ + for (size_t i= MAXUISOURCES; i < MAXSOURCES; i++) { + if (source_available[i]) { + source_available[i] = false; + alSourcef(sources[i], AL_PITCH, 1.0); + alSourcef(sources[i], AL_GAIN, 1.0); + //con_debug << "reserved source " << i << std::endl; + return i; + } + } + return 0; +} + +void Sources::remove(size_t index) +{ + if ( (index < MAXUISOURCES ) || (MAXSOURCES <= index)) + return; + + source_available[index] = true; + alSourcef(sources[index], AL_GAIN, 0); + alSourceRewind(sources[index]); + + //con_debug << "removed source " << index << std::endl; +} + } |