}
// initialize the sound manager
-void SGSoundMgr::init() {
-
+void SGSoundMgr::init()
+{
+#ifdef ENABLE_SOUND
if (is_working())
{
SG_LOG( SG_SOUND, SG_ALERT, "Oops, OpenAL sound manager is already initialized." );
if (d->_free_sources.empty()) {
SG_LOG(SG_SOUND, SG_ALERT, "Unable to grab any OpenAL sources!");
}
+#endif
}
void SGSoundMgr::reinit()
{
+#ifndef ENABLE_SOUND
bool was_active = _active;
if (was_active)
if (was_active)
resume();
+#endif
}
-void SGSoundMgr::activate() {
+void SGSoundMgr::activate()
+{
+#ifdef ENABLE_SOUND
if ( is_working() ) {
_active = true;
sgrp->activate();
}
}
+#endif
}
// stop the sound manager
-void SGSoundMgr::stop() {
-
+void SGSoundMgr::stop()
+{
+#ifdef ENABLE_SOUND
// first stop all sample groups
sample_group_map_iterator sample_grp_current = d->_sample_groups.begin();
sample_group_map_iterator sample_grp_end = d->_sample_groups.end();
_renderer = "unknown";
_vendor = "unknown";
}
+#endif
}
-void SGSoundMgr::suspend() {
+void SGSoundMgr::suspend()
+{
+#ifdef ENABLE_SOUND
if (is_working()) {
sample_group_map_iterator sample_grp_current = d->_sample_groups.begin();
sample_group_map_iterator sample_grp_end = d->_sample_groups.end();
}
_active = false;
}
+#endif
}
-void SGSoundMgr::resume() {
+void SGSoundMgr::resume()
+{
+#ifdef ENABLE_SOUND
if (is_working()) {
sample_group_map_iterator sample_grp_current = d->_sample_groups.begin();
sample_group_map_iterator sample_grp_end = d->_sample_groups.end();
}
_active = true;
}
+#endif
}
// run the audio scheduler
-void SGSoundMgr::update( double dt ) {
+void SGSoundMgr::update( double dt )
+{
+#ifdef ENABLE_SOUND
if (_active) {
alcSuspendContext(d->_context);
alcProcessContext(d->_context);
}
+#endif
}
// add a sample group, return true if successful
it = std::find(d->_sources_in_use.begin(), d->_sources_in_use.end(), source);
if ( it != d->_sources_in_use.end() ) {
+ #ifdef ENABLE_SOUND
ALint result;
alGetSourcei( source, AL_SOURCE_STATE, &result );
alSourcei( source, AL_BUFFER, 0 ); // detach the associated buffer
testForALError("release_source");
+ #endif
d->_free_sources.push_back( source );
d->_sources_in_use.erase( it );
}
unsigned int SGSoundMgr::request_buffer(SGSoundSample *sample)
{
ALuint buffer = NO_BUFFER;
-
+#ifdef ENABLE_SOUND
if ( !sample->is_valid_buffer() ) {
// sample was not yet loaded or removed again
string sample_name = sample->get_sample_name();
else {
buffer = sample->get_buffer();
}
-
+#endif
return buffer;
}
sample->no_valid_buffer();
buffer_it->second.refctr--;
if (buffer_it->second.refctr == 0) {
+#ifdef ENABLE_SOUND
ALuint buffer = buffer_it->second.id;
alDeleteBuffers(1, &buffer);
+#endif
d->_buffers.erase( buffer_it );
testForALError("release buffer");
}
vector<const char*> SGSoundMgr::get_available_devices()
{
vector<const char*> devices;
+#ifdef ENABLE_SOUND
const ALCchar *s;
if (alcIsExtensionPresent(NULL, "ALC_enumerate_all_EXT") == AL_TRUE) {
}
devices.push_back(ptr);
}
-
+#endif
return devices;
}
bool SGSoundMgr::testForALError(string s)
{
+#ifdef ENABLE_SOUND
ALenum error = alGetError();
if (error != AL_NO_ERROR) {
SG_LOG( SG_SOUND, SG_ALERT, "AL Error (sound manager): "
<< alGetString(error) << " at " << s);
return true;
}
+#endif
return false;
}
bool SGSoundMgr::testForALCError(string s)
{
+#ifdef ENABLE_SOUND
ALCenum error;
error = alcGetError(d->_device);
if (error != ALC_NO_ERROR) {
<< s);
return true;
}
+#endif
return false;
}