]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/sound_samples.c
Merge pull request #602 from tsoding/valgrind
[nothing.git] / src / game / sound_samples.c
index de5cbf72d0ee4e4f08439037aa9c0ee8d1b56f1b..b8d9126d24ffb2964c75880b439fc17d2bb16723 100644 (file)
@@ -1,13 +1,14 @@
 #include <SDL2/SDL.h>
 #include <SDL2/SDL_mixer.h>
-#include <assert.h>
+#include "system/stacktrace.h"
 #include <stdio.h>
 #include <stdlib.h>
 
 #include "math/pi.h"
 #include "sound_samples.h"
-#include "system/error.h"
+#include "system/log.h"
 #include "system/lt.h"
+#include "system/nth_alloc.h"
 
 struct Sound_samples
 {
@@ -31,26 +32,24 @@ static int mix_get_free_channel(void)
 Sound_samples *create_sound_samples(const char *sample_files[],
                                       size_t sample_files_count)
 {
-    assert(sample_files);
-    assert(sample_files_count > 0);
+    trace_assert(sample_files);
+    trace_assert(sample_files_count > 0);
 
     Lt *lt = create_lt();
     if (lt == NULL) {
         return NULL;
     }
 
-    Sound_samples *sound_samples = PUSH_LT(lt, malloc(sizeof(Sound_samples)), free);
+    Sound_samples *sound_samples = PUSH_LT(lt, nth_alloc(sizeof(Sound_samples)), free);
     if (sound_samples == NULL) {
-        throw_error(ERROR_TYPE_LIBC);
         RETURN_LT(lt, NULL);
     }
 
     sound_samples->samples = PUSH_LT(
         lt,
-        malloc(sizeof(Mix_Chunk*) * sample_files_count),
+        nth_alloc(sizeof(Mix_Chunk*) * sample_files_count),
         free);
     if (sound_samples->samples == NULL) {
-        throw_error(ERROR_TYPE_LIBC);
         RETURN_LT(lt, NULL);
     }
 
@@ -60,7 +59,7 @@ Sound_samples *create_sound_samples(const char *sample_files[],
             Mix_LoadWAV(sample_files[i]),
             Mix_FreeChunk);
         if (sound_samples->samples[i] == NULL) {
-            throw_error(ERROR_TYPE_SDL2_MIXER);
+            log_fail("Could not load '%s': %s\n", sample_files[i], Mix_GetError());
             RETURN_LT(lt, NULL);
         }
     }
@@ -75,7 +74,7 @@ Sound_samples *create_sound_samples(const char *sample_files[],
 
 void destroy_sound_samples(Sound_samples *sound_samples)
 {
-    assert(sound_samples);
+    trace_assert(sound_samples);
     RETURN_LT0(sound_samples->lt);
 }
 
@@ -83,12 +82,12 @@ int sound_samples_play_sound(Sound_samples *sound_samples,
                             size_t sound_index,
                             int loops)
 {
-    assert(sound_samples);
+    trace_assert(sound_samples);
 
     if (sound_index < sound_samples->samples_count) {
         const int free_channel = mix_get_free_channel();
 
-        printf("Found free channel: %d\n", free_channel);
+        log_info("Found free channel: %d\n", free_channel);
 
         if (free_channel >= 0) {
             return Mix_PlayChannel(free_channel, sound_samples->samples[sound_index], loops);
@@ -100,7 +99,7 @@ int sound_samples_play_sound(Sound_samples *sound_samples,
 
 int sound_samples_toggle_pause(Sound_samples *sound_samples)
 {
-    assert(sound_samples);
+    trace_assert(sound_samples);
 
     if (sound_samples->paused) {
         Mix_Resume(-1);