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

Reply via email to