diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index bf1e6a3978..fdea4cb754 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -312,14 +312,16 @@ int main (int argc, char *argv[]) fixup_bundle_environment (); #endif - Glib::thread_init(); + if (!Glib::thread_supported()) + Glib::thread_init(); + gtk_set_locale (); #ifdef VST_SUPPORT - /* this does some magic that is needed to make GTK and Wine's own - X11 client interact properly. - */ - gui_init (&argc, &argv); + /* this does some magic that is needed to make GTK and Wine's own + X11 client interact properly. + */ + gui_init (&argc, &argv); #endif (void) bindtextdomain (PACKAGE, localedir); @@ -380,7 +382,7 @@ int main (int argc, char *argv[]) cerr << _("Cannot install SIGPIPE error handler") << endl; } - try { + try { ui = new ARDOUR_UI (&argc, &argv); } catch (failed_constructor& err) { error << _("could not create ARDOUR GUI") << endmsg; diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 471924811a..05894d8377 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -308,6 +308,11 @@ lotsa_files_please () int ARDOUR::init (bool use_vst, bool try_optimization) { + if (!Glib::thread_supported()) + Glib::thread_init(); + + PBD::ID::init (); + extern void setup_enum_writer (); (void) bindtextdomain(PACKAGE, LOCALEDIR); diff --git a/libs/ardour/test/testrunner.cpp b/libs/ardour/test/testrunner.cpp index b680843558..ebbd50543e 100644 --- a/libs/ardour/test/testrunner.cpp +++ b/libs/ardour/test/testrunner.cpp @@ -9,8 +9,6 @@ int main() { - Glib::thread_init (); - PBD::ID::init (); ARDOUR::init (false, false); CppUnit::TestResult testresult; diff --git a/libs/pbd/id.cc b/libs/pbd/id.cc index ab9c7e7392..25c96c305e 100644 --- a/libs/pbd/id.cc +++ b/libs/pbd/id.cc @@ -38,7 +38,8 @@ uint64_t ID::_counter = 0; void ID::init () { - counter_lock = new Glib::Mutex; + if (!counter_lock) + counter_lock = new Glib::Mutex; } ID::ID ()