diff options
Diffstat (limited to 'src/audio')
-rw-r--r-- | src/audio/audio.cc | 12 | ||||
-rw-r--r-- | src/audio/audio.h | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc index b7a79d7..46d3a67 100644 --- a/src/audio/audio.cc +++ b/src/audio/audio.cc @@ -212,4 +212,16 @@ void update_source(size_t source_index, math::Vector3f const & location, math::V alSourcef(source, AL_GAIN, gain); } +bool is_playing(const size_t source_index) +{ + if (!audio_context) + return false; + + ALuint source = Sources::source(source_index); + ALint srcstate = 0; + alGetSourcei(source , AL_SOURCE_STATE , &srcstate); + + return (srcstate == AL_PLAYING); +} + } diff --git a/src/audio/audio.h b/src/audio/audio.h index ecfdf3e..ad9a024 100644 --- a/src/audio/audio.h +++ b/src/audio/audio.h @@ -58,6 +58,10 @@ void update_source(size_t source_index, math::Vector3f const & location, math::V /// update listener parameters void update_listener(math::Vector3f const &location, math::Axis const &axis, math::Vector3f const & velocity, float gain = 1.0f); + +/// return true is a source is playing +bool is_playing(const size_t source_index); + } #endif // __INCLUDED_AUDIO_AUDIO_H__ |