diff --git a/jail_audio.cpp b/jail_audio.cpp index 7c147f2..28869f8 100644 --- a/jail_audio.cpp +++ b/jail_audio.cpp @@ -27,6 +27,7 @@ struct JA_Music_t SDL_AudioSpec spec { SDL_AUDIO_S16, 2, 48000 }; Uint32 length { 0 }; Uint8 *buffer { nullptr }; + char *filename { nullptr }; int pos { 0 }; int times { 0 }; @@ -197,6 +198,8 @@ JA_Music_t *JA_LoadMusic(const char* filename) fclose(f); JA_Music_t *music = JA_LoadMusic(buffer, fsize); + music->filename = (char*)malloc(strlen(filename)+1); + strcpy(music->filename, filename); free(buffer); @@ -221,6 +224,12 @@ void JA_PlayMusic(JA_Music_t *music, const int loop) //SDL_ResumeAudioStreamDevice(current_music->stream); } +char *JA_GetMusicFilename(JA_Music_t *music) +{ + if (!music) music = current_music; + return music->filename; +} + void JA_PauseMusic() { if (!JA_musicEnabled) return; @@ -251,6 +260,8 @@ void JA_StopMusic() //SDL_PauseAudioStreamDevice(current_music->stream); SDL_DestroyAudioStream(current_music->stream); current_music->stream = nullptr; + free(current_music->filename); + current_music->filename = nullptr; } void JA_FadeOutMusic(const int milliseconds) diff --git a/jail_audio.h b/jail_audio.h index ec5936e..9764dfc 100644 --- a/jail_audio.h +++ b/jail_audio.h @@ -13,6 +13,7 @@ void JA_Quit(); JA_Music_t *JA_LoadMusic(const char* filename); JA_Music_t *JA_LoadMusic(Uint8* buffer, Uint32 length); void JA_PlayMusic(JA_Music_t *music, const int loop = -1); +char *JA_GetMusicFilename(JA_Music_t *music = nullptr); void JA_PauseMusic(); void JA_ResumeMusic(); void JA_StopMusic();