Merge branch 'musicplus-core' into musicplus-fade-sdltimer

This commit is contained in:
mazmazz 2018-08-19 08:35:56 -04:00
commit 69153194fe

View file

@ -456,9 +456,12 @@ void I_SetSfxVolume(UINT8 volume)
musictype_t I_MusicType(void)
{
#ifdef HAVE_LIBGME
if (gme)
return MU_GME;
else if (midimode)
else
#endif
if (midimode)
return MU_MID;
else if (!music)
return MU_NONE;
@ -472,7 +475,11 @@ musictype_t I_MusicType(void)
static void count_music_bytes(int chan, void *stream, int len, void *udata)
{
if (gme || midimode || !music || I_MusicType() == MU_MOD)
if (
#ifdef HAVE_LIBGME
gme ||
#endif
midimode || !music || I_MusicType() == MU_MOD)
return;
music_bytes += len;
}
@ -540,7 +547,11 @@ void I_PauseSong(INT32 handle)
if(midimode) // really, SDL Mixer? why can't you pause MIDI???
return;
if(!gme && I_MusicType() != MU_MOD)
if(
#ifdef HAVE_LIBGME
!gme &&
#endif
I_MusicType() != MU_MOD)
Mix_UnregisterEffect(MIX_CHANNEL_POST, count_music_bytes);
Mix_PauseMusic();
@ -554,7 +565,11 @@ void I_ResumeSong(INT32 handle)
if (midimode)
return;
if (!gme && I_MusicType() != MU_MOD)
if (
#ifdef HAVE_LIBGME
!gme &&
#endif
I_MusicType() != MU_MOD)
{
while(Mix_UnregisterEffect(MIX_CHANNEL_POST, count_music_bytes) != 0) { }
// HACK: fixes issue of multiple effect callbacks being registered
@ -917,6 +932,7 @@ UINT32 I_GetMusicLength(void)
{
INT32 length;
#ifdef HAVE_LIBGME
if (gme)
{
gme_info_t *info;
@ -943,7 +959,9 @@ UINT32 I_GetMusicLength(void)
gme_free_info(info);
return max(length, 0);
}
else if (midimode || !music || I_MusicType() == MU_MOD)
else
#endif
if (midimode || !music || I_MusicType() == MU_MOD)
return 0;
else
{
@ -958,7 +976,11 @@ UINT32 I_GetMusicLength(void)
boolean I_SetMusicLoopPoint(UINT32 looppoint)
{
if (midimode || gme || !music || I_MusicType() == MU_MOD || !is_looping)
if (
#ifdef HAVE_LIBGME
gme ||
#endif
midimode || !music || I_MusicType() == MU_MOD || !is_looping)
return false;
else
{
@ -974,6 +996,7 @@ boolean I_SetMusicLoopPoint(UINT32 looppoint)
UINT32 I_GetMusicLoopPoint(void)
{
#ifdef HAVE_LIBGME
if (gme)
{
INT32 looppoint;
@ -991,7 +1014,9 @@ UINT32 I_GetMusicLoopPoint(void)
gme_free_info(info);
return max(looppoint, 0);
}
else if (midimode || !music || I_MusicType() == MU_MOD)
else
#endif
if (midimode || !music || I_MusicType() == MU_MOD)
return 0;
else
return (UINT32)(loop_point * 1000);
@ -1000,7 +1025,7 @@ UINT32 I_GetMusicLoopPoint(void)
boolean I_SetMusicPosition(UINT32 position)
{
UINT32 length;
#ifdef HAVE_LIBGME
if (gme)
{
// this isn't required technically, but GME thread-locks for a second
@ -1021,7 +1046,9 @@ boolean I_SetMusicPosition(UINT32 position)
else
return true;
}
else if (midimode || !music)
else
#endif
if (midimode || !music)
return false;
else if (I_MusicType() == MU_MOD)
return Mix_SetMusicPosition(position); // Goes by channels
@ -1049,6 +1076,7 @@ boolean I_SetMusicPosition(UINT32 position)
UINT32 I_GetMusicPosition(void)
{
#ifdef HAVE_LIBGME
if (gme)
{
INT32 position = gme_tell(gme);
@ -1075,7 +1103,9 @@ UINT32 I_GetMusicPosition(void)
gme_free_info(info);
return max(position, 0);
}
else if (midimode || !music)
else
#endif
if (midimode || !music)
return 0;
else
return music_bytes/44100.0L*1000.0L/4; //assume 44.1khz
@ -1184,12 +1214,7 @@ void I_ShutdownMIDIMusic(void)
void I_SetMIDIMusicVolume(UINT8 volume)
{
// HACK: Until we stop using native MIDI,
// disable volume changes
(void)volume;
midi_volume = 31;
//midi_volume = volume;
midi_volume = volume;
if (!midimode || !music)
return;
Mix_VolumeMusic((UINT32)midi_volume*128/31);