summaryrefslogtreecommitdiff
path: root/src/resources/sdlmusic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources/sdlmusic.cpp')
-rw-r--r--src/resources/sdlmusic.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/resources/sdlmusic.cpp b/src/resources/sdlmusic.cpp
index fb31c0562..03c6922d6 100644
--- a/src/resources/sdlmusic.cpp
+++ b/src/resources/sdlmusic.cpp
@@ -26,28 +26,37 @@
#include "debug.h"
-SDLMusic::SDLMusic(Mix_Music *const music) :
+SDLMusic::SDLMusic(Mix_Music *const music, SDL_RWops *const rw) :
Resource(),
- mMusic(music)
+ mMusic(music),
+ mRw(rw)
{
}
SDLMusic::~SDLMusic()
{
Mix_FreeMusic(mMusic);
+#ifndef USE_SDL2
+ if (mRw)
+ {
+ SDL_RWclose(mRw);
+ mRw = nullptr;
+ }
+#endif
}
Resource *SDLMusic::load(SDL_RWops *const rw)
{
#ifdef USE_SDL2
if (Mix_Music *const music = Mix_LoadMUSType_RW(rw, MUS_OGG, 1))
+ {
+ return new SDLMusic(music, nullptr);
#else
- // +++ here probably mem leak
// Mix_LoadMUSType_RW was added without version changed in SDL1.2 :(
if (Mix_Music *const music = Mix_LoadMUS_RW(rw))
-#endif
{
- return new SDLMusic(music);
+ return new SDLMusic(music, rw);
+#endif
}
else
{