From c435e01a107108e105c1b0caf5e9ea3dc93710b0 Mon Sep 17 00:00:00 2001 From: Stephane Peter Date: Sat, 30 Oct 1999 22:57:49 +0000 Subject: [PATCH] Various bugfixes for music looping --- music.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/music.c b/music.c index 1e8c86e0..fe8e8233 100644 --- a/music.c +++ b/music.c @@ -116,13 +116,6 @@ void music_mixer(void *udata, Uint8 *stream, int len) lowlevel_halt(); /* This function sets music_playing to NULL */ return; } - if ( music_playing && music_loops && !lowlevel_playing() ) { - if ( -- music_loops ) { - Mix_RewindMusic(); - if ( lowlevel_play(music_playing) < 0 ) - music_stopped = 1; /* Something went wrong */ - } - } if ( !music_stopped && music_playing->fading != MIX_NO_FADING ) { Uint32 ticks = SDL_GetTicks() - music_playing->ticks_fade; if( ticks > music_playing->fade_length ) { @@ -149,6 +142,16 @@ void music_mixer(void *udata, Uint8 *stream, int len) } } } + if ( music_loops && !lowlevel_playing() ) { + if ( -- music_loops ) { + Mix_RewindMusic(); + if ( lowlevel_play(music_playing) < 0 ) { + fprintf(stderr,"Warning: Music restart failed.\n"); + music_stopped = 1; /* Something went wrong */ + music_playing->fading = MIX_NO_FADING; + } + } + } switch (music_playing->type) { #ifdef CMD_MUSIC case MUS_CMD: @@ -625,6 +628,7 @@ static void lowlevel_halt(void) music_playing->fading = MIX_NO_FADING; music_playing = 0; music_active = 0; + music_loops = 0; music_stopped = 0; }