fix newly-appearing crash-at-close caused by muddled thinking in pbd/pthread_utils
[ardour.git] / gtk2_ardour / ardour_ui_dependents.cc
index 4d38c51e2071c53eeb2b3091ec72cd40ab213db1..821382717fea91570302bb6fe6c4d68a79887c20 100644 (file)
 
 */
 
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
 /* this file exists solely to break compilation dependencies that
    would connect changes to the mixer or editor objects.
 */
@@ -49,7 +53,9 @@ using namespace ARDOUR;
 void
 ARDOUR_UI::shutdown ()
 {
-       ui_config->save_state();
+       if (ui_config->dirty()) {
+               ui_config->save_state();
+       }
 }
 
 void
@@ -60,6 +66,9 @@ ARDOUR_UI::we_have_dependents ()
        keyboard->setup_keybindings ();
        editor->setup_tooltips ();
        editor->UpdateAllTransportClocks.connect (sigc::mem_fun (*this, &ARDOUR_UI::update_transport_clocks));
+
+       editor->track_mixer_selection ();
+       mixer->track_editor_selection ();
 }
 
 void
@@ -69,6 +78,7 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
        editor->set_session (s);
        BootMessage (_("Setup Mixer"));
        mixer->set_session (s);
+       meterbridge->set_session (s);
 
        /* its safe to do this now */
 
@@ -76,79 +86,6 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
        s->restore_history ("");
 }
 
-static bool
-_hide_splash (gpointer arg)
-{
-       ((ARDOUR_UI*)arg)->hide_splash();
-       return false;
-}
-
-void
-ARDOUR_UI::goto_editor_window ()
-{
-       if (splash && splash->is_visible()) {
-               // in 2 seconds, hide the splash screen
-               Glib::signal_timeout().connect (sigc::bind (sigc::ptr_fun (_hide_splash), this), 2000);
-       }
-
-       editor->show_window ();
-       editor->present ();
-       flush_pending ();
-}
-
-void
-ARDOUR_UI::goto_mixer_window ()
-{
-       mixer->show_window ();
-       mixer->present ();
-       flush_pending ();
-}
-
-void
-ARDOUR_UI::toggle_mixer_window ()
-{
-       Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
-       if (!act) {
-               return;
-       }
-
-       Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
-       
-       if (tact->get_active()) {
-               goto_mixer_window ();
-       } else {
-               mixer->hide ();
-       }
-}      
-
-void
-ARDOUR_UI::toggle_mixer_on_top ()
-{
-       Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer-on-top"));
-       if (!act) {
-               return;
-       }
-
-       Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
-       
-       if (tact->get_active()) {
-
-               /* Toggle the mixer to `visible' if required */
-               act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
-               if (act) {
-                       tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
-       
-                       if (!tact->get_active()) {
-                               tact->set_active ();
-                       }
-               }
-               
-               goto_mixer_window ();
-       } else {
-               goto_editor_window ();
-       }
-}
-
 /** The main editor window has been closed */
 gint
 ARDOUR_UI::exit_on_main_window_close (GdkEventAny * /*ev*/)