Author: cazfi Date: Tue Oct 13 18:37:11 2015 New Revision: 30065 URL: http://svn.gna.org/viewcvs/freeciv?rev=30065&view=rev Log: Fixed disabling of music mid-game to actually stop it and not just to change track.
See bug #23931 Modified: branches/S2_6/client/audio.c branches/S2_6/client/audio.h branches/S2_6/client/music.c Modified: branches/S2_6/client/audio.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/audio.c?rev=30065&r1=30064&r2=30065&view=diff ============================================================================== --- branches/S2_6/client/audio.c (original) +++ branches/S2_6/client/audio.c Tue Oct 13 18:37:11 2015 @@ -52,6 +52,7 @@ static int num_plugins_used = 0; static int selected_plugin = -1; static int current_track = -1; +static enum music_usage current_usage; static struct mfcb_data { @@ -364,8 +365,24 @@ **************************************************************************/ static void music_finished_callback(void) { - current_track = audio_play_tag(mfcb.sfile, mfcb.tag, TRUE, current_track, - FALSE); + bool usage_enabled = TRUE; + + switch (current_usage) { + case MU_SINGLE: + usage_enabled = FALSE; + break; + case MU_MENU: + usage_enabled = options.sound_enable_menu_music; + break; + case MU_INGAME: + usage_enabled = options.sound_enable_game_music; + break; + } + + if (usage_enabled) { + current_track = audio_play_tag(mfcb.sfile, mfcb.tag, TRUE, current_track, + FALSE); + } } /************************************************************************** @@ -511,8 +528,11 @@ /************************************************************************** Loop music as suggested by sound tags **************************************************************************/ -void audio_play_music(const char *const tag, char *const alt_tag) -{ +void audio_play_music(const char *const tag, char *const alt_tag, + enum music_usage usage) +{ + current_usage = usage; + real_audio_play_music(tag, alt_tag, FALSE); } @@ -521,6 +541,8 @@ **************************************************************************/ void audio_play_track(const char *const tag, char *const alt_tag) { + current_usage = MU_SINGLE; + real_audio_play_music(tag, alt_tag, TRUE); } Modified: branches/S2_6/client/audio.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/audio.h?rev=30065&r1=30064&r2=30065&view=diff ============================================================================== --- branches/S2_6/client/audio.h (original) +++ branches/S2_6/client/audio.h Tue Oct 13 18:37:11 2015 @@ -39,6 +39,8 @@ audio_finished_callback cb); }; +enum music_usage { MU_SINGLE, MU_MENU, MU_INGAME }; + struct strvec; const struct strvec *get_soundplugin_list(void); const struct strvec *get_soundset_list(void); @@ -54,7 +56,8 @@ void audio_restart(const char *soundset_name, const char *musicset_name); void audio_play_sound(const char *const tag, char *const alt_tag); -void audio_play_music(const char *const tag, char *const alt_tag); +void audio_play_music(const char *const tag, char *const alt_tag, + enum music_usage usage); void audio_play_track(const char *const tag, char *const alt_tag); double audio_get_volume(void); Modified: branches/S2_6/client/music.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/music.c?rev=30065&r1=30064&r2=30065&view=diff ============================================================================== --- branches/S2_6/client/music.c (original) +++ branches/S2_6/client/music.c Tue Oct 13 18:37:11 2015 @@ -70,7 +70,7 @@ if (tag != NULL && tag[0] != '\0') { log_debug("Play %s", tag); - audio_play_music(tag, NULL); + audio_play_music(tag, NULL, MU_INGAME); } } } @@ -90,7 +90,7 @@ void start_menu_music(const char *const tag, char *const alt_tag) { if (options.sound_enable_menu_music) { - audio_play_music(tag, alt_tag); + audio_play_music(tag, alt_tag, MU_MENU); } } _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits