Author: cazfi Date: Mon Nov 2 20:02:18 2015 New Revision: 30376 URL: http://svn.gna.org/viewcvs/freeciv?rev=30376&view=rev Log: When client options are saved when it exits, write message about it to a log instead of the already closed or immediately closing output window.
Reported by Jacob Nevins <jtn> See bug #23969 Modified: branches/S2_5/client/client_main.c branches/S2_5/client/clinet.c branches/S2_5/client/gui-gtk-2.0/menu.c branches/S2_5/client/gui-gtk-2.0/optiondlg.c branches/S2_5/client/gui-gtk-3.0/menu.c branches/S2_5/client/gui-gtk-3.0/optiondlg.c branches/S2_5/client/gui-qt/menu.cpp branches/S2_5/client/gui-qt/optiondlg.cpp branches/S2_5/client/gui-sdl/optiondlg.c branches/S2_5/client/gui-xaw/menu.c branches/S2_5/client/options.c branches/S2_5/client/options.h branches/S2_5/utility/log.h Modified: branches/S2_5/client/client_main.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/client_main.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/client_main.c (original) +++ branches/S2_5/client/client_main.c Mon Nov 2 20:02:18 2015 @@ -625,6 +625,18 @@ } /************************************************************************** + Write messages from option saving to the log. +**************************************************************************/ +static void log_option_save_msg(enum log_level lvl, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + log_va_list(lvl, msg, args); + va_end(args); +} + +/************************************************************************** Main client execution stop function. This calls ui_exit() and not the other way around. **************************************************************************/ @@ -636,7 +648,7 @@ } if (save_options_on_exit) { - options_save(); + options_save(log_option_save_msg); } overview_free(); Modified: branches/S2_5/client/clinet.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/clinet.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/clinet.c (original) +++ branches/S2_5/client/clinet.c Mon Nov 2 20:02:18 2015 @@ -323,7 +323,7 @@ client_exit(); } if (save_options_on_exit) { - options_save(); + options_save(NULL); } } Modified: branches/S2_5/client/gui-gtk-2.0/menu.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-2.0/menu.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-gtk-2.0/menu.c (original) +++ branches/S2_5/client/gui-gtk-2.0/menu.c Mon Nov 2 20:02:18 2015 @@ -136,7 +136,7 @@ *****************************************************************/ static void save_options_callback(GtkAction *action, gpointer data) { - options_save(); + options_save(NULL); } /**************************************************************** Modified: branches/S2_5/client/gui-gtk-2.0/optiondlg.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-2.0/optiondlg.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-gtk-2.0/optiondlg.c (original) +++ branches/S2_5/client/gui-gtk-2.0/optiondlg.c Mon Nov 2 20:02:18 2015 @@ -118,7 +118,7 @@ break; case RESPONSE_SAVE: desired_settable_options_update(); - options_save(); + options_save(NULL); break; } } Modified: branches/S2_5/client/gui-gtk-3.0/menu.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-3.0/menu.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-gtk-3.0/menu.c (original) +++ branches/S2_5/client/gui-gtk-3.0/menu.c Mon Nov 2 20:02:18 2015 @@ -136,7 +136,7 @@ *****************************************************************/ static void save_options_callback(GtkAction *action, gpointer data) { - options_save(); + options_save(NULL); } /**************************************************************** Modified: branches/S2_5/client/gui-gtk-3.0/optiondlg.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-3.0/optiondlg.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-gtk-3.0/optiondlg.c (original) +++ branches/S2_5/client/gui-gtk-3.0/optiondlg.c Mon Nov 2 20:02:18 2015 @@ -118,7 +118,7 @@ break; case RESPONSE_SAVE: desired_settable_options_update(); - options_save(); + options_save(NULL); break; } } Modified: branches/S2_5/client/gui-qt/menu.cpp URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/menu.cpp?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-qt/menu.cpp (original) +++ branches/S2_5/client/gui-qt/menu.cpp Mon Nov 2 20:02:18 2015 @@ -1966,7 +1966,7 @@ *****************************************************************/ void mr_menu::save_options_now() { - options_save(); + options_save(NULL); } /*************************************************************************** Modified: branches/S2_5/client/gui-qt/optiondlg.cpp URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-qt/optiondlg.cpp?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-qt/optiondlg.cpp (original) +++ branches/S2_5/client/gui-qt/optiondlg.cpp Mon Nov 2 20:02:18 2015 @@ -174,7 +174,7 @@ break; case RESPONSE_SAVE: desired_settable_options_update(); - options_save(); + options_save(NULL); break; case RESPONSE_RESET: full_reset(); Modified: branches/S2_5/client/gui-sdl/optiondlg.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-sdl/optiondlg.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-sdl/optiondlg.c (original) +++ branches/S2_5/client/gui-sdl/optiondlg.c Mon Nov 2 20:02:18 2015 @@ -343,7 +343,7 @@ static int save_client_options_callback(struct widget *pWidget) { if (Main.event.button.button == SDL_BUTTON_LEFT) { - options_save(); + options_save(NULL); } return -1; } Modified: branches/S2_5/client/gui-xaw/menu.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-xaw/menu.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/gui-xaw/menu.c (original) +++ branches/S2_5/client/gui-xaw/menu.c Mon Nov 2 20:02:18 2015 @@ -569,7 +569,7 @@ popup_messageopt_dialog(); break; case MENU_GAME_SAVE_SETTINGS: - options_save(); + options_save(NULL); break; case MENU_GAME_SERVER_OPTIONS: option_dialog_popup(_("Game Settings"), server_optset); Modified: branches/S2_5/client/options.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/options.c?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/options.c (original) +++ branches/S2_5/client/options.c Mon Nov 2 20:02:18 2015 @@ -5272,16 +5272,33 @@ } /************************************************************************** + Write messages from option saving to the output window. +**************************************************************************/ +static void option_save_output_window_callback(enum log_level lvl, + const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + output_window_vprintf(ftc_client, msg, args); + va_end(args); +} + +/************************************************************************** Save all options. **************************************************************************/ -void options_save(void) +void options_save(option_save_log_callback log_cb) { struct section_file *sf; const char *name = get_current_option_file_name(); + if (log_cb == NULL) { + /* Default callback */ + log_cb = option_save_output_window_callback; + } + if (!name) { - output_window_append(ftc_client, - _("Save failed, cannot find a filename.")); + log_cb(LOG_ERROR, _("Save failed, cannot find a filename.")); return; } @@ -5311,10 +5328,9 @@ /* save to disk */ if (!secfile_save(sf, name, 0, FZ_PLAIN)) { - output_window_printf(ftc_client, - _("Save failed, cannot write to file %s"), name); + log_cb(LOG_ERROR, _("Save failed, cannot write to file %s"), name); } else { - output_window_printf(ftc_client, _("Saved settings to file %s"), name); + log_cb(LOG_VERBOSE, _("Saved settings to file %s"), name); } secfile_destroy(sf); } Modified: branches/S2_5/client/options.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/options.h?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/client/options.h (original) +++ branches/S2_5/client/options.h Mon Nov 2 20:02:18 2015 @@ -233,6 +233,7 @@ struct option; /* Opaque type. */ struct option_set; /* Opaque type. */ +typedef void (*option_save_log_callback)(enum log_level lvl, const char *msg, ...); /* Main functions. */ void options_init(void); @@ -240,7 +241,7 @@ void server_options_init(void); void server_options_free(void); void options_load(void); -void options_save(void); +void options_save(option_save_log_callback log_cb); /* Option sets. */ Modified: branches/S2_5/utility/log.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/utility/log.h?rev=30376&r1=30375&r2=30376&view=diff ============================================================================== --- branches/S2_5/utility/log.h (original) +++ branches/S2_5/utility/log.h Mon Nov 2 20:02:18 2015 @@ -108,6 +108,12 @@ # define log_debug(message, ...) /* Do nothing. */ #endif /* DEBUG */ +#define log_va_list(level, msg, args) \ + if (log_do_output_for_level(level)) { \ + vdo_log(__FILE__, __FUNCTION__, __FC_LINE__, FALSE, \ + level, msg, args); \ + } + /* Used by game debug command */ #define log_test log_normal #define log_packet log_verbose _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits