From be5312493f5f7e8764dbb88a9f59ab63c53603dd Mon Sep 17 00:00:00 2001 From: milek7 Date: Thu, 12 Sep 2019 18:15:28 +0200 Subject: [PATCH] tweaks in buffer handling after failure --- audio.cpp | 2 ++ audiorenderer.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/audio.cpp b/audio.cpp index 5a824de1..9f6530d3 100644 --- a/audio.cpp +++ b/audio.cpp @@ -64,9 +64,11 @@ openal_buffer::openal_buffer( std::string const &Filename ) : alGenBuffers(1, &id); if (id != null_resource && alIsBuffer(id)) { + alGetError(); alBufferData(id, AL_FORMAT_MONO16, buf, si.frames * 2, rate); } else { + id = null_resource; ErrorLog("sound: failed to create AL buffer"); } diff --git a/audiorenderer.h b/audiorenderer.h index 0376843a..f31424f1 100644 --- a/audiorenderer.h +++ b/audiorenderer.h @@ -175,7 +175,7 @@ openal_source::bind( sound_source *Controller, uint32_sequence Sounds, Iterator_ First, Last, [&]( audio::buffer_handle const &bufferhandle ) { auto const &buffer { audio::renderer.buffer( bufferhandle ) }; - buffers.emplace_back( buffer.id ); } ); + if (buffer.id != null_resource) buffers.emplace_back( buffer.id ); } ); if( id != audio::null_resource ) { ::alSourceQueueBuffers( id, static_cast( buffers.size() ), buffers.data() );