mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-09-29 17:57:23 +02:00
16fef54ae1
This makes the freesrc argument of Mix_LoadMUS_RW() 1 instead of 0. If the argument is nonzero, then the passed SDL_RWops will be automatically freed when m_music is freed, too. I don't know why this was 0 before. Setting it to 1 fixes a memory leak that Valgrind reports (which turns into an actual leak every time custom assets are mounted or unmounted).
63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#include "SoundSystem.h"
|
|
|
|
#include <SDL.h>
|
|
|
|
#include "FileSystemUtils.h"
|
|
|
|
MusicTrack::MusicTrack(const char* fileName)
|
|
{
|
|
m_music = Mix_LoadMUS(fileName);
|
|
m_isValid = true;
|
|
if(m_music == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to load Ogg Music file: %s\n", Mix_GetError());
|
|
m_isValid = false;
|
|
}
|
|
}
|
|
|
|
MusicTrack::MusicTrack(SDL_RWops *rw)
|
|
{
|
|
m_music = Mix_LoadMUS_RW(rw, 1);
|
|
m_isValid = true;
|
|
if(m_music == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to load Magic Binary Music file: %s\n", Mix_GetError());
|
|
m_isValid = false;
|
|
}
|
|
}
|
|
|
|
SoundTrack::SoundTrack(const char* fileName)
|
|
{
|
|
sound = NULL;
|
|
|
|
unsigned char *mem;
|
|
size_t length = 0;
|
|
FILESYSTEM_loadFileToMemory(fileName, &mem, &length);
|
|
if (mem == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to load WAV file %s\n", fileName);
|
|
return;
|
|
}
|
|
SDL_RWops *fileIn = SDL_RWFromMem(mem, length);
|
|
sound = Mix_LoadWAV_RW(fileIn, 1);
|
|
FILESYSTEM_freeMemory(&mem);
|
|
|
|
if (sound == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to load WAV file: %s\n", Mix_GetError());
|
|
}
|
|
}
|
|
|
|
SoundSystem::SoundSystem()
|
|
{
|
|
int audio_rate = 44100;
|
|
Uint16 audio_format = AUDIO_S16SYS;
|
|
int audio_channels = 2;
|
|
int audio_buffers = 1024;
|
|
|
|
if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers) != 0)
|
|
{
|
|
fprintf(stderr, "Unable to initialize audio: %s\n", Mix_GetError());
|
|
SDL_assert(0 && "Unable to initialize audio!");
|
|
}
|
|
}
|