From fb54b4d1c290f17404f996a38b20f0d533c4a368 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 17 May 2025 08:14:36 -0700 Subject: [PATCH] Use dynamically allocated buffer (#105) --- LEGO1/omni/src/audio/mxsoundmanager.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/LEGO1/omni/src/audio/mxsoundmanager.cpp b/LEGO1/omni/src/audio/mxsoundmanager.cpp index 141bfa64..0d14343c 100644 --- a/LEGO1/omni/src/audio/mxsoundmanager.cpp +++ b/LEGO1/omni/src/audio/mxsoundmanager.cpp @@ -136,15 +136,16 @@ void MxSoundManager::AudioStreamCallback( int p_totalAmount ) { - static MxU8 g_buffer[4096]; + static vector g_buffer; + g_buffer.reserve(p_additionalAmount); MxSoundManager* manager = (MxSoundManager*) p_userdata; ma_uint32 bytesPerFrame = ma_get_bytes_per_frame(ma_format_f32, ma_engine_get_channels(&manager->m_engine)); - ma_uint32 bufferSizeInFrames = (ma_uint32) SDL_min(sizeof(g_buffer), p_additionalAmount) / bytesPerFrame; + ma_uint32 bufferSizeInFrames = (ma_uint32) p_additionalAmount / bytesPerFrame; ma_uint64 framesRead; - if (ma_engine_read_pcm_frames(&manager->m_engine, g_buffer, bufferSizeInFrames, &framesRead) == MA_SUCCESS) { - SDL_PutAudioStreamData(manager->m_stream, g_buffer, framesRead * bytesPerFrame); + if (ma_engine_read_pcm_frames(&manager->m_engine, g_buffer.data(), bufferSizeInFrames, &framesRead) == MA_SUCCESS) { + SDL_PutAudioStreamData(manager->m_stream, g_buffer.data(), framesRead * bytesPerFrame); } }