From d1f26b4d3b360f274163e10358b5ab2e8bee0d1f Mon Sep 17 00:00:00 2001 From: David Reid Date: Tue, 19 Feb 2019 20:40:22 +1000 Subject: [PATCH] Fix bugs with sndio. --- mini_al.h | 2 ++ tests/mal_blocking.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mini_al.h b/mini_al.h index 3c696a8c..d72240a7 100644 --- a/mini_al.h +++ b/mini_al.h @@ -17786,6 +17786,7 @@ mal_result mal_device_init_handle__sndio(mal_context* pContext, const mal_device internalBufferSizeInFrames = par.appbufsz; if (deviceType == mal_device_type_capture) { + pDevice->sndio.handleCapture = handle; pDevice->capture.internalFormat = internalFormat; pDevice->capture.internalChannels = internalChannels; pDevice->capture.internalSampleRate = internalSampleRate; @@ -17793,6 +17794,7 @@ mal_result mal_device_init_handle__sndio(mal_context* pContext, const mal_device pDevice->capture.internalBufferSizeInFrames = internalBufferSizeInFrames; pDevice->capture.internalPeriods = internalPeriods; } else { + pDevice->sndio.handlePlayback = handle; pDevice->playback.internalFormat = internalFormat; pDevice->playback.internalChannels = internalChannels; pDevice->playback.internalSampleRate = internalSampleRate; diff --git a/tests/mal_blocking.c b/tests/mal_blocking.c index a58355e7..bcf2db29 100644 --- a/tests/mal_blocking.c +++ b/tests/mal_blocking.c @@ -6,6 +6,14 @@ #define MINI_AL_IMPLEMENTATION #include "../mini_al.h" +void on_log(mal_context* pContext, mal_device* pDevice, mal_uint32 logLevel, const char* message) +{ + (void)pContext; + (void)pDevice; + (void)logLevel; + printf("%s\n", message); +} + int main(int argc, char** argv) { (void)argc; @@ -14,6 +22,9 @@ int main(int argc, char** argv) mal_result result; mal_backend backend = mal_backend_audio4; + mal_context_config contextConfig = mal_context_config_init(); + contextConfig.logCallback = on_log; + mal_device_config deviceConfig = mal_device_config_init(mal_device_type_playback); deviceConfig.playback.format = mal_format_f32; deviceConfig.capture.format = mal_format_f32; @@ -53,7 +64,6 @@ int main(int argc, char** argv) float buffer[1024*32]; float* pBuffer = buffer; //mal_uint32 frameCount = (mal_uint32)mal_sine_wave_read_f32_ex(&sineWave, mal_countof(buffer) / device.playback.channels, device.playback.channels, mal_stream_layout_interleaved, &pBuffer); mal_uint32 frameCount = (mal_uint32)mal_decoder_read_pcm_frames(&decoder, mal_countof(buffer) / device.playback.channels, pBuffer); - result = mal_device_write(&device, pBuffer, frameCount); if (result != MAL_SUCCESS) { printf("Error occurred while writing to the device.\n");