summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ui_config.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-05-07 17:17:41 +0200
committerRobin Gareus <robin@gareus.org>2016-05-07 17:17:41 +0200
commit2f9d5077dcd82ad0ea09f342ebc1baf8dc68a68c (patch)
treecf78f1e875131754b1ab42f82fc9dbd766c048cc /gtk2_ardour/ui_config.cc
parente59ab55831f6daed1eb7a299120787182b9416b7 (diff)
GUI part of LocaleGuard optimization.
Diffstat (limited to 'gtk2_ardour/ui_config.cc')
-rw-r--r--gtk2_ardour/ui_config.cc11
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") {