Author: cazfi Date: Sat Aug 20 18:55:16 2016 New Revision: 33653 URL: http://svn.gna.org/viewcvs/freeciv?rev=33653&view=rev Log: Do not start menu music when the client leaves game with purpose to quit completely.
Reported by Jacob Nevins <jtn> See bug #24844 Modified: trunk/client/client_main.c trunk/client/client_main.h trunk/client/gui-gtk-2.0/gui_main.c trunk/client/gui-gtk-3.0/gui_main.c trunk/client/gui-gtk-3.x/gui_main.c trunk/client/gui-qt/gui_main.cpp trunk/client/gui-sdl2/gui_main.c trunk/client/gui-stub/gui_main.c Modified: trunk/client/client_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/client_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/client_main.c (original) +++ trunk/client/client_main.c Sat Aug 20 18:55:16 2016 @@ -160,6 +160,8 @@ #ifdef FREECIV_DEBUG bool hackless = FALSE; #endif + +static bool client_quitting = FALSE; /************************************************************************** Convert a text string from the internal to the data encoding, when it @@ -846,8 +848,10 @@ if (oldstate == C_S_RUNNING && newstate != C_S_PREPARING) { stop_style_music(); - /* Back to menu */ - start_menu_music("music_menu", NULL); + if (!is_client_quitting()) { + /* Back to menu */ + start_menu_music("music_menu", NULL); + } } civclient_state = newstate; @@ -1447,3 +1451,19 @@ return NULL; } + +/**************************************************************************** + Is the client marked as one going down? +****************************************************************************/ +bool is_client_quitting(void) +{ + return client_quitting; +} + +/**************************************************************************** + Mark client as one going to quit as soon as possible, +****************************************************************************/ +void start_quitting(void) +{ + client_quitting = TRUE; +} Modified: trunk/client/client_main.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/client_main.h?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/client_main.h (original) +++ trunk/client/client_main.h Sat Aug 20 18:55:16 2016 @@ -1,4 +1,4 @@ -/********************************************************************** +/*********************************************************************** Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -117,6 +117,9 @@ void client_exit(void); +bool is_client_quitting(void); +void start_quitting(void); + /* Set in GUI code. */ extern const char * const gui_character_encoding; extern const bool gui_use_transliteration; Modified: trunk/client/gui-gtk-2.0/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-2.0/gui_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-gtk-2.0/gui_main.c (original) +++ trunk/client/gui-gtk-2.0/gui_main.c Sat Aug 20 18:55:16 2016 @@ -1583,12 +1583,12 @@ gtk_window_set_title(GTK_WINDOW (toplevel), _("Freeciv")); g_signal_connect(toplevel, "delete_event", - G_CALLBACK(quit_dialog_callback), NULL); + G_CALLBACK(quit_dialog_callback), NULL); /* Disable GTK+ cursor key focus movement */ sig = g_signal_lookup("focus", GTK_TYPE_WIDGET); g_signal_handlers_disconnect_matched(toplevel, G_SIGNAL_MATCH_ID, sig, - 0, 0, 0, 0); + 0, 0, 0, 0); g_signal_connect(toplevel, "focus", G_CALLBACK(toplevel_focus), NULL); @@ -1625,17 +1625,17 @@ thick_line_gc = gdk_gc_new(root_window); border_line_gc = gdk_gc_new(root_window); gdk_gc_set_line_attributes(thin_line_gc, 1, - GDK_LINE_SOLID, - GDK_CAP_NOT_LAST, - GDK_JOIN_MITER); + GDK_LINE_SOLID, + GDK_CAP_NOT_LAST, + GDK_JOIN_MITER); gdk_gc_set_line_attributes(thick_line_gc, 2, - GDK_LINE_SOLID, - GDK_CAP_NOT_LAST, - GDK_JOIN_MITER); + GDK_LINE_SOLID, + GDK_CAP_NOT_LAST, + GDK_JOIN_MITER); gdk_gc_set_line_attributes(border_line_gc, BORDER_WIDTH, - GDK_LINE_ON_OFF_DASH, - GDK_CAP_NOT_LAST, - GDK_JOIN_MITER); + GDK_LINE_ON_OFF_DASH, + GDK_CAP_NOT_LAST, + GDK_JOIN_MITER); fill_tile_gc = gdk_gc_new(root_window); gdk_gc_set_fill(fill_tile_gc, GDK_STIPPLED); @@ -1652,7 +1652,7 @@ { GdkColor pixel; - + mask_bitmap = gdk_pixmap_new(root_window, 1, 1, 1); mask_fg_gc = gdk_gc_new(mask_bitmap); @@ -1696,13 +1696,14 @@ /* assumes toplevel showing */ set_client_state(C_S_DISCONNECTED); - + /* assumes client_state is set */ timer_id = g_timeout_add(TIMER_INTERVAL, timer_callback, NULL); gui_up = TRUE; gtk_main(); gui_up = FALSE; + start_quitting(); destroy_server_scans(); free_mapcanvas_and_overview(); Modified: trunk/client/gui-gtk-3.0/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/gui_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/gui_main.c (original) +++ trunk/client/gui-gtk-3.0/gui_main.c Sat Aug 20 18:55:16 2016 @@ -1759,16 +1759,16 @@ if (GUI_GTK_OPTION(fullscreen)) { gtk_window_fullscreen(GTK_WINDOW(toplevel)); } - + gtk_window_set_title(GTK_WINDOW (toplevel), _("Freeciv")); g_signal_connect(toplevel, "delete_event", - G_CALLBACK(quit_dialog_callback), NULL); + G_CALLBACK(quit_dialog_callback), NULL); /* Disable GTK+ cursor key focus movement */ sig = g_signal_lookup("focus", GTK_TYPE_WIDGET); g_signal_handlers_disconnect_matched(toplevel, G_SIGNAL_MATCH_ID, sig, - 0, 0, 0, 0); + 0, 0, 0, 0); g_signal_connect(toplevel, "focus", G_CALLBACK(toplevel_focus), NULL); @@ -1831,13 +1831,14 @@ /* assumes toplevel showing */ set_client_state(C_S_DISCONNECTED); - + /* assumes client_state is set */ timer_id = g_timeout_add(TIMER_INTERVAL, timer_callback, NULL); gui_up = TRUE; gtk_main(); gui_up = FALSE; + start_quitting(); destroy_server_scans(); free_mapcanvas_and_overview(); Modified: trunk/client/gui-gtk-3.x/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.x/gui_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-gtk-3.x/gui_main.c (original) +++ trunk/client/gui-gtk-3.x/gui_main.c Sat Aug 20 18:55:16 2016 @@ -1759,16 +1759,16 @@ if (GUI_GTK_OPTION(fullscreen)) { gtk_window_fullscreen(GTK_WINDOW(toplevel)); } - + gtk_window_set_title(GTK_WINDOW (toplevel), _("Freeciv")); g_signal_connect(toplevel, "delete_event", - G_CALLBACK(quit_dialog_callback), NULL); + G_CALLBACK(quit_dialog_callback), NULL); /* Disable GTK+ cursor key focus movement */ sig = g_signal_lookup("focus", GTK_TYPE_WIDGET); g_signal_handlers_disconnect_matched(toplevel, G_SIGNAL_MATCH_ID, sig, - 0, 0, 0, 0); + 0, 0, 0, 0); g_signal_connect(toplevel, "focus", G_CALLBACK(toplevel_focus), NULL); @@ -1831,13 +1831,14 @@ /* assumes toplevel showing */ set_client_state(C_S_DISCONNECTED); - + /* assumes client_state is set */ timer_id = g_timeout_add(TIMER_INTERVAL, timer_callback, NULL); gui_up = TRUE; gtk_main(); gui_up = FALSE; + start_quitting(); destroy_server_scans(); free_mapcanvas_and_overview(); Modified: trunk/client/gui-qt/gui_main.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/gui_main.cpp?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-qt/gui_main.cpp (original) +++ trunk/client/gui-qt/gui_main.cpp Sat Aug 20 18:55:16 2016 @@ -182,6 +182,7 @@ freeciv_qt = new fc_client(); freeciv_qt->main(qapp); + start_quitting(); } } Modified: trunk/client/gui-sdl2/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/gui_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-sdl2/gui_main.c (original) +++ trunk/client/gui-sdl2/gui_main.c Sat Aug 20 18:55:16 2016 @@ -992,6 +992,7 @@ gui_event_loop(NULL, NULL, main_key_down_handler, main_key_up_handler, NULL, main_mouse_button_down_handler, main_mouse_button_up_handler, main_mouse_motion_handler); + start_quitting(); } /************************************************************************** Modified: trunk/client/gui-stub/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-stub/gui_main.c?rev=33653&r1=33652&r2=33653&view=diff ============================================================================== --- trunk/client/gui-stub/gui_main.c (original) +++ trunk/client/gui-stub/gui_main.c Sat Aug 20 18:55:16 2016 @@ -111,6 +111,10 @@ /* PORTME */ fc_fprintf(stderr, "Freeciv rules!\n"); + + /* Main loop here */ + + start_quitting(); } /**************************************************************************** _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits