canvas HSV color serialization needs LocaleGuard
[ardour.git] / gtk2_ardour / main.cc
index 441b2dc92956485cb0ab410040dffc51aca45760..0fa6f53fe1542bd982d04e26784480212b3aeeae 100644 (file)
 */
 
 #include <cstdlib>
-#include <signal.h>
 #include <cerrno>
-#include <fstream>
 #include <vector>
 
+#include <signal.h>
+#include <locale.h>
+
 #include <sigc++/bind.h>
 #include <gtkmm/settings.h>
 
+#ifdef HAVE_FFTW35F
+#include <fftw3.h>
+#endif
+
 #include "pbd/error.h"
 #include "pbd/file_utils.h"
 #include "pbd/textreceiver.h"
@@ -48,6 +53,7 @@
 #include <gtkmm2ext/utils.h>
 
 #include "ardour_ui.h"
+#include "ui_config.h"
 #include "opts.h"
 #include "enums.h"
 #include "bundle_env.h"
@@ -269,6 +275,8 @@ extern "C" {
 
 int ardour_main (int argc, char *argv[])
 
+#elif defined NOMAIN
+int nomain (int argc, char *argv[])
 #else
 int main (int argc, char *argv[])
 #endif
@@ -283,8 +291,14 @@ int main (int argc, char *argv[])
                Glib::thread_init();
        }
 
+#ifdef HAVE_FFTW35F
+       fftwf_make_planner_thread_safe ();
+#endif
+
 #ifdef ENABLE_NLS
-       gtk_set_locale ();
+       /* initialize C and C++ locales to user preference */
+       setlocale (LC_ALL, "");
+       std::locale::global (std::locale (setlocale (LC_ALL, 0)));
 #endif
 
        console_madness_begin();
@@ -367,15 +381,15 @@ int main (int argc, char *argv[])
        }
 #endif
 
-       UIConfiguration* ui_config = new UIConfiguration;
+       DEBUG_TRACE (DEBUG::Locale, string_compose ("main() locale '%1'\n", setlocale (LC_NUMERIC, NULL)));
 
-       if (ui_config->pre_gui_init ()) {
+       if (UIConfiguration::instance().pre_gui_init ()) {
                error << _("Could not complete pre-GUI initialization") << endmsg;
                exit (1);
        }
-       
+
        try {
-               ui = new ARDOUR_UI (&argc, &argv, localedir.c_str(), ui_config);
+               ui = new ARDOUR_UI (&argc, &argv, localedir.c_str());
        } catch (failed_constructor& err) {
                error << string_compose (_("could not create %1 GUI"), PROGRAM_NAME) << endmsg;
                exit (1);