diff --git a/src/lua_baselib.c b/src/lua_baselib.c index b191dba62b7c0a3108d5459d8ec5fa73ed996ab4..1125ef7f84b4da04c9b6ac17aafd076d750aef23 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -3718,7 +3718,8 @@ static int musicdef_get(lua_State *L) static int lib_sMusicInfo(lua_State *L) { - LUA_PushUserdata(L, S_MusicInfo(), META_MUSICDEF); + const char *music_name = lua_tolstring(L, 1, NULL); + LUA_PushUserdata(L, S_MusicInfo(music_name), META_MUSICDEF); return 1; } diff --git a/src/s_sound.c b/src/s_sound.c index 0654e705f86f78ba5ab7d742654692a3625e1ef3..1a04e9ab87aa751ea985e4e62e46dcd93ffd432a 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -1801,12 +1801,21 @@ UINT32 S_GetMusicLength(void) return I_GetSongLength(); } -musicdef_t *S_MusicInfo(void) +// +// S_MusicInfo +// +// Returns metadata about supplied music +// If name is NULL, returns the currently playing music (if any) +// +musicdef_t *S_MusicInfo(const char *name) { + if (!name) + name = music_name; + musicdef_t *def; for (def = musicdefstart; def; def = def->next) { - if (strcasecmp(def->name, music_name) == 0) + if (strcasecmp(def->name, name) == 0) return def; } diff --git a/src/s_sound.h b/src/s_sound.h index 909a77e081c21c6f02374ead552def674344c1e6..98aebcc27cfb95b231588101557f3485983d5e9e 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -221,7 +221,7 @@ boolean S_PrepareSoundTest(void); UINT32 S_GetMusicLength(void); // Get MUSICDEF of Music -musicdef_t *S_MusicInfo(void); +musicdef_t *S_MusicInfo(const char *name); // Set LoopPoint of Music boolean S_SetMusicLoopPoint(UINT32 looppoint);