#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
{
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);
}
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);
}
}
void destroy_sound_samples(Sound_samples *sound_samples)
{
- assert(sound_samples);
+ trace_assert(sound_samples);
RETURN_LT0(sound_samples->lt);
}
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);
int sound_samples_toggle_pause(Sound_samples *sound_samples)
{
- assert(sound_samples);
+ trace_assert(sound_samples);
if (sound_samples->paused) {
Mix_Resume(-1);