diff options
author | Robin Gareus <robin@gareus.org> | 2016-05-07 17:17:41 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-05-07 17:17:41 +0200 |
commit | 2f9d5077dcd82ad0ea09f342ebc1baf8dc68a68c (patch) | |
tree | cf78f1e875131754b1ab42f82fc9dbd766c048cc /gtk2_ardour/ui_config.cc | |
parent | e59ab55831f6daed1eb7a299120787182b9416b7 (diff) |
GUI part of LocaleGuard optimization.
Diffstat (limited to 'gtk2_ardour/ui_config.cc')
-rw-r--r-- | gtk2_ardour/ui_config.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc index 50d3fba120..d456a95794 100644 --- a/gtk2_ardour/ui_config.cc +++ b/gtk2_ardour/ui_config.cc @@ -33,6 +33,7 @@ #include <pango/pangocairo.h> // for fontmap resolution control for GnomeCanvas #include "pbd/gstdio_compat.h" +#include "pbd/unwind.h" #include <glibmm/miscutils.h> #include <gtkmm/settings.h> @@ -248,7 +249,6 @@ UIConfiguration::load_defaults () if (ret == 0) { /* reload color theme */ load_color_theme (false); - ColorsChanged (); /* EMIT SIGNAL */ } return ret; @@ -260,6 +260,10 @@ UIConfiguration::load_color_theme (bool allow_own) std::string cfile; string basename; bool found = false; + /* ColorsChanged() will trigger a parameter_changed () which + * in turn calls save_state() + */ + PBD::Unwinder<uint32_t> uw (block_save, block_save + 1); if (allow_own) { basename = "my-"; @@ -357,6 +361,7 @@ UIConfiguration::store_color_theme () int UIConfiguration::load_state () { + LocaleGuard lg; // a single guard for all 3 configs bool found = false; std::string rcfile; @@ -407,6 +412,9 @@ UIConfiguration::load_state () int UIConfiguration::save_state() { + if (block_save != 0) { + return -1; + } if (_dirty) { std::string rcfile = Glib::build_filename (user_config_directory(), ui_config_file_name); @@ -480,6 +488,7 @@ UIConfiguration::get_variables (std::string which_node) int UIConfiguration::set_state (const XMLNode& root, int /*version*/) { + LocaleGuard lg; /* this can load a generic UI configuration file or a colors file */ if (root.name() != "Ardour") { |