}
else
{
- if (_smgr->request_buffer(sample) == SGSoundMgr::NO_BUFFER)
+ ALuint buffer = _smgr->request_buffer(sample);
+ if (buffer == SGSoundMgr::FAILED_BUFFER ||
+ buffer == SGSoundMgr::NO_BUFFER)
{
_smgr->release_source(source);
continue;
}
// start playing the sample
- ALuint buffer = sample->get_buffer();
+ buffer = sample->get_buffer();
if ( alIsBuffer(buffer) == AL_TRUE )
{
alSourcei( source, AL_BUFFER, buffer );
if (res == false) return NO_BUFFER;
} catch (sg_exception& e) {
SG_LOG(SG_GENERAL, SG_ALERT,
- "failed to load sound buffer:" << e.getFormattedMessage());
- return NO_BUFFER;
+ "failed to load sound buffer: " << e.getFormattedMessage());
+ sample->set_buffer( SGSoundMgr::FAILED_BUFFER );
+ return FAILED_BUFFER;
}
sample->set_frequency( freq );
#endif
if (format == AL_FORMAT_STEREO8 || format == AL_FORMAT_STEREO16) {
+ free(data);
throw sg_io_exception("Warning: STEREO files are not supported for 3D audio effects: " + samplepath);
}
enum {
NO_SOURCE = (unsigned int)-1,
- NO_BUFFER = (unsigned int)-1
+ NO_BUFFER = (unsigned int)-1,
+ FAILED_BUFFER = (unsigned int)-2
};
/**