From 06a3fc95288b8301a3b872ec5b4e906240f76fef Mon Sep 17 00:00:00 2001 From: realtradam Date: Mon, 5 Jun 2023 04:40:58 -0400 Subject: begin rewrite to avoid exposed pointers --- src/audio/irodeo_audio_t.h | 15 +++++++++++++++ src/audio/rodeo_audio.c | 45 ++++++++++++++++++++++----------------------- src/audio/rodeo_audio_t.h | 16 ---------------- 3 files changed, 37 insertions(+), 39 deletions(-) create mode 100644 src/audio/irodeo_audio_t.h delete mode 100644 src/audio/rodeo_audio_t.h (limited to 'src/audio') diff --git a/src/audio/irodeo_audio_t.h b/src/audio/irodeo_audio_t.h new file mode 100644 index 0000000..e2e247e --- /dev/null +++ b/src/audio/irodeo_audio_t.h @@ -0,0 +1,15 @@ +#pragma once + +// -- external -- +#include "SDL_mixer.h" + +struct +rodeo_audio_sound_data +{ + Mix_Chunk *sdl_sound; +}; +struct +rodeo_audio_music_data +{ + Mix_Music *sdl_music; +}; diff --git a/src/audio/rodeo_audio.c b/src/audio/rodeo_audio.c index f049fa2..485ddfd 100644 --- a/src/audio/rodeo_audio.c +++ b/src/audio/rodeo_audio.c @@ -4,13 +4,13 @@ #include "rodeo/audio.h" #include "rodeo/log.h" // private -#include "audio/rodeo_audio_t.h" +#include "audio/irodeo_audio_t.h" // -- external -- #include "SDL.h" #include "SDL_mixer.h" -static uint32_t **irodeo_audio_channelPool; +//static uint32_t **irodeo_audio_channelPool; //static uint32_t irodeo_audio_channelPool_num; //static uint32_t irodeo_audio_channelPool_size; @@ -92,7 +92,7 @@ rodeo_audio_init(uint32_t channels) void rodeo_audio_deinit(void) { - free(irodeo_audio_channelPool); + //free(irodeo_audio_channelPool); Mix_Quit(); } @@ -147,12 +147,13 @@ rodeo_audio_channelPool_volume_get(uint32_t channel_pool_id) } */ -rodeo_audio_sound_t* +rodeo_audio_sound_t rodeo_audio_sound_create_from_path(cstr path) { - rodeo_audio_sound_t *sample_sound = malloc(sizeof(rodeo_audio_sound_t)); - sample_sound->sdl_sound = Mix_LoadWAV(cstr_str(&path)); - if(NULL == sample_sound->sdl_sound) + rodeo_audio_sound_t sample_sound = {0}; + sample_sound.data = calloc(1, sizeof(*sample_sound.data)); + sample_sound.data->sdl_sound = Mix_LoadWAV(cstr_str(&path)); + if(NULL == sample_sound.data->sdl_sound) { rodeo_log( rodeo_logLevel_error, @@ -164,18 +165,17 @@ rodeo_audio_sound_create_from_path(cstr path) } void -rodeo_audio_sound_destroy(rodeo_audio_sound_t* sound) +rodeo_audio_sound_destroy(rodeo_audio_sound_t sound) { - Mix_FreeChunk(sound->sdl_sound); - free(sound); + Mix_FreeChunk(sound.data->sdl_sound); } -rodeo_audio_music_t* +rodeo_audio_music_t rodeo_audio_music_create_from_path(cstr path) { - rodeo_audio_music_t *sample_music = malloc(sizeof(rodeo_audio_music_t)); - sample_music->sdl_music = Mix_LoadMUS(cstr_str(&path)); - if(NULL == sample_music->sdl_music) + rodeo_audio_music_t sample_music = {0}; + sample_music.data->sdl_music = Mix_LoadMUS(cstr_str(&path)); + if(NULL == sample_music.data->sdl_music) { rodeo_log( rodeo_logLevel_error, @@ -187,31 +187,30 @@ rodeo_audio_music_create_from_path(cstr path) } void -rodeo_audio_music_destroy(rodeo_audio_music_t* music) +rodeo_audio_music_destroy(rodeo_audio_music_t music) { - Mix_FreeMusic(music->sdl_music); - free(music); + Mix_FreeMusic(music.data->sdl_music); } void -rodeo_audio_sound_play(rodeo_audio_sound_t *sound) //, uint32_t channel_pool_id) +rodeo_audio_sound_play(rodeo_audio_sound_t sound) //, uint32_t channel_pool_id) { - Mix_PlayChannel(-1, sound->sdl_sound, 0); + Mix_PlayChannel(-1, sound.data->sdl_sound, 0); } void -rodeo_audio_music_play(rodeo_audio_music_t *music) //, uint32_t channel_pool_id) +rodeo_audio_music_play(rodeo_audio_music_t music) //, uint32_t channel_pool_id) { rodeo_audio_music_stop(); - Mix_PlayMusic(music->sdl_music, 0); + Mix_PlayMusic(music.data->sdl_music, 0); } void -rodeo_audio_music_play_fadeIn(rodeo_audio_music_t *music, uint32_t fade_duration_milliseconds) +rodeo_audio_music_play_fadeIn(rodeo_audio_music_t music, uint32_t fade_duration_milliseconds) { rodeo_audio_music_stop(); - Mix_FadeInMusic(music->sdl_music, 0, (int32_t)fade_duration_milliseconds); + Mix_FadeInMusic(music.data->sdl_music, 0, (int32_t)fade_duration_milliseconds); } void diff --git a/src/audio/rodeo_audio_t.h b/src/audio/rodeo_audio_t.h deleted file mode 100644 index b762cf3..0000000 --- a/src/audio/rodeo_audio_t.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once -// -- external -- -#include "SDL.h" -#include "SDL_mixer.h" - -struct -rodeo_audio_sound_t -{ - Mix_Chunk *sdl_sound; -}; - -struct -rodeo_audio_music_t -{ - Mix_Music *sdl_music; -}; -- cgit v1.2.3