From 2498bad58da3dc69dfe55178b536ae69d411593c Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Sun, 30 Mar 2014 21:20:21 +0300 Subject: [PATCH] Autosave settings immediately after closing settings --- include/platform/wxwidgets/platform.hpp | 1 + src/platform/wxwidgets/editor-conflict.cpp | 1 + src/platform/wxwidgets/main.cpp | 15 ++++++++++++++- src/platform/wxwidgets/settings-common.cpp | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/platform/wxwidgets/platform.hpp b/include/platform/wxwidgets/platform.hpp index 77d49856..a9380d46 100644 --- a/include/platform/wxwidgets/platform.hpp +++ b/include/platform/wxwidgets/platform.hpp @@ -41,6 +41,7 @@ void signal_resize_needed(); void _runuifun_async(void (*fn)(void*), void* arg); void show_projectwindow(wxWindow* modwin); void signal_core_change(); +void do_save_configuration(); std::vector prompt_action_params(wxWindow* parent, const std::string& label, const std::list& params); diff --git a/src/platform/wxwidgets/editor-conflict.cpp b/src/platform/wxwidgets/editor-conflict.cpp index 8f9fb840..69b4df35 100644 --- a/src/platform/wxwidgets/editor-conflict.cpp +++ b/src/platform/wxwidgets/editor-conflict.cpp @@ -157,6 +157,7 @@ void show_conflictwindow(wxWindow* parent) return; } editor->Destroy(); + do_save_configuration(); } std::map core_selections; diff --git a/src/platform/wxwidgets/main.cpp b/src/platform/wxwidgets/main.cpp index 26c8afaf..9de3066f 100644 --- a/src/platform/wxwidgets/main.cpp +++ b/src/platform/wxwidgets/main.cpp @@ -222,7 +222,8 @@ end: void save_configuration() { std::string cfg = get_config_path() + "/lsneswxw.cfg"; - std::ofstream cfgfile(cfg.c_str()); + std::string cfgtmp = cfg + ".tmp"; + std::ofstream cfgfile(cfgtmp.c_str()); //Settings. for(auto i : lsnes_vsetc.get_all()) cfgfile << "SET " << i.first << " " << i.second << std::endl; @@ -257,6 +258,13 @@ end: for(auto i : core_selections) if(i.second != "") cfgfile << "PREFER " << i.first << " " << i.second << std::endl; + if(!cfgfile) { + show_message_ok(NULL, "Error Saving configuration", "Error saving configuration", + wxICON_EXCLAMATION); + return; + } + cfgfile.close(); + zip::rename_overwrite(cfgtmp.c_str(), cfg.c_str()); //Last save. std::ofstream lsave(get_config_path() + "/" + our_rom_name + ".ls"); lsave << last_save; @@ -535,6 +543,11 @@ int lsnes_app::OnExit() return 0; } +void do_save_configuration() +{ + save_configuration(); +} + namespace { struct _graphics_driver drv = { diff --git a/src/platform/wxwidgets/settings-common.cpp b/src/platform/wxwidgets/settings-common.cpp index 14ada618..212f247d 100644 --- a/src/platform/wxwidgets/settings-common.cpp +++ b/src/platform/wxwidgets/settings-common.cpp @@ -213,6 +213,7 @@ void display_settings_dialog(wxWindow* parent, settings_tab_factory* singletab) } dlg = NULL; editor->Destroy(); + do_save_configuration(); } void settings_activate_keygrab(std::function callback) -- 2.11.4.GIT