X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmain.cc;h=9b0a0c5e2f42edd3ffd9caa2490e29d3c50ff7a9;hb=198ba51c3af256e23d525900b236df4b734c34e0;hp=a123631a54cc0f2b3219b919e67f2f8767a49e9e;hpb=93ffece46502e46bf2a22c93ceccc87c0487515f;p=ardour.git diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index a123631a54..9b0a0c5e2f 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -297,11 +297,23 @@ int main (int argc, char *argv[]) #ifdef ENABLE_NLS /* initialize C and C++ locales to user preference */ - setlocale (LC_ALL, ""); - try { - std::locale::global (std::locale (setlocale (LC_ALL, 0))); - } catch (...) { - std::cerr << "Cannot set C++ locale\n"; + char* l_msg = NULL; + char* l_num = NULL; + if (ARDOUR::translations_are_enabled ()) { + setlocale (LC_ALL, ""); + try { + std::locale::global (std::locale (setlocale (LC_ALL, 0))); + } catch (...) { + std::cerr << "Cannot set C++ locale\n"; + } +#ifndef COMPILER_MSVC + // LC_MESSAGES isn't a supported locale setting when building + // with MSVC (in fact, I doubt if it's valid for Windows at all) + l_msg = setlocale (LC_MESSAGES, NULL); +#endif + l_num = setlocale (LC_NUMERIC, NULL); + if (l_msg) { l_msg = strdup (l_msg); } + if (l_num) { l_num = strdup (l_num); } } #endif @@ -379,6 +391,25 @@ int main (int argc, char *argv[]) return curvetest (curvetest_file); } +#ifdef ENABLE_NLS + ARDOUR::LocaleMode locale_mode = UIConfiguration::instance().get_locale_mode (); + if (l_msg && l_num && locale_mode != ARDOUR::SET_LC_ALL) { + try { + std::locale cpp_locale (std::locale::classic ()); + cpp_locale = std::locale (cpp_locale, l_msg, std::locale::messages); + if (ARDOUR::SET_LC_MESSAGES_AND_LC_NUMERIC == locale_mode) { + cpp_locale = std::locale (cpp_locale, l_num, std::locale::numeric); + } + std::locale::global (cpp_locale); + } catch (...) { + std::cerr << "Cannot override C++ locale\n"; + } + info << "LC_ALL: " << setlocale (LC_ALL, NULL) << endmsg; + } + free (l_msg); + free (l_num); +#endif + #ifndef PLATFORM_WINDOWS if (::signal (SIGPIPE, sigpipe_handler)) { cerr << _("Cannot xinstall SIGPIPE error handler") << endl; @@ -411,8 +442,22 @@ int main (int argc, char *argv[]) ui = 0; ARDOUR::cleanup (); +#ifndef NDEBUG + if (getenv ("ARDOUR_RUNNING_UNDER_VALGRIND")) { + Glib::usleep(100000); + sched_yield(); + } +#endif + pthread_cancel_all (); +#ifndef NDEBUG + if (getenv ("ARDOUR_RUNNING_UNDER_VALGRIND")) { + Glib::usleep(100000); + sched_yield(); + } +#endif + console_madness_end (); return 0;