Fixed: ugly fix to not crash when we cannot create a buffer #1116

This commit is contained in:
vl 2011-06-01 00:04:11 +02:00
parent 00cb427b90
commit 629065a528

View file

@ -890,15 +890,22 @@ void CSourceAL::setStreamingBuffersMax(uint buffers)
unqueueBuffers(); unqueueBuffers();
removeBuffers(); removeBuffers();
for(uint i = 0; i < _BuffersMax; ++i) for(uint i = 0; i < _BuffersMax; ++i)
{ {
// create a new buffer try {
CBufferAL *buffer = static_cast<CBufferAL*>(_SoundDriver->createBuffer()); // create a new buffer
// use StorageSoftware because buffers will be reused CBufferAL *buffer = static_cast<CBufferAL*>(_SoundDriver->createBuffer());
// deleting and recreating them is a waste of time // use StorageSoftware because buffers will be reused
buffer->setStorageMode(IBuffer::StorageSoftware); // deleting and recreating them is a waste of time
_Buffers[buffer->bufferName()] = buffer; buffer->setStorageMode(IBuffer::StorageSoftware);
} _Buffers[buffer->bufferName()] = buffer;
} catch(ESoundDriverGenBuf &e) {
nlwarning("Cannot create %d buffers. openal fails after %d buffers", buffers, i);
_BuffersMax = i;
_BuffersName.resize(i);
break;
}
}
} }
/// Set the default size for streaming buffers /// Set the default size for streaming buffers