diff --git a/gtk2_ardour/session_dialog.h b/gtk2_ardour/session_dialog.h index c5b710c4dc..1bad15391a 100644 --- a/gtk2_ardour/session_dialog.h +++ b/gtk2_ardour/session_dialog.h @@ -20,6 +20,8 @@ #ifndef __gtk2_ardour_session_dialog_h__ #define __gtk2_ardour_session_dialog_h__ +#include "pbd/signals.h" + #include #include "waves_dialog.h" diff --git a/gtk2_ardour/session_dialog.logic.cc b/gtk2_ardour/session_dialog.logic.cc index a177548977..a4d1673c64 100644 --- a/gtk2_ardour/session_dialog.logic.cc +++ b/gtk2_ardour/session_dialog.logic.cc @@ -50,6 +50,7 @@ #include "opts.h" #include "i18n.h" #include "utils.h" +#include "gui_thread.h" #include "open_file_dialog_proxy.h" @@ -86,7 +87,12 @@ void SessionDialog::init() _quit_button.signal_clicked.connect (sigc::mem_fun (*this, &SessionDialog::on_quit)); _new_session_button.signal_clicked.connect (sigc::mem_fun (*this, &SessionDialog::on_new_session)); _system_configuration_button.signal_clicked.connect (sigc::mem_fun (*this, &SessionDialog::on_system_configuration)); - for (size_t i = 0; i < MAX_RECENT_SESSION_COUNTS; i++) { + + EngineStateController::instance ()->InputConfigChanged.connect (_system_config_update, invalidator (*this), boost::bind (&SessionDialog::on_system_configuration_change, this), gui_context()); + EngineStateController::instance ()->OutputConfigChanged.connect (_system_config_update, invalidator (*this), boost::bind (&SessionDialog::on_system_configuration_change, this), gui_context()); + EngineStateController::instance ()->EngineRunning.connect (_system_config_update, invalidator (*this), boost::bind (&SessionDialog::on_system_configuration_change, this), gui_context()); + + for (size_t i = 0; i < MAX_RECENT_SESSION_COUNTS; i++) { _recent_session_button[i]->signal_clicked.connect (sigc::mem_fun (*this, &SessionDialog::on_recent_session )); _recent_session_button[i]->signal_double_clicked.connect (sigc::mem_fun (*this, &SessionDialog::on_recent_session_double_click )); } @@ -198,7 +204,14 @@ SessionDialog::on_new_session (WavesButton*) } } -void SessionDialog::redisplay_system_configuration () +void +SessionDialog::on_system_configuration_change () +{ + redisplay_system_configuration (); +} + +void +SessionDialog::redisplay_system_configuration () { ARDOUR::EngineStateController* eng_controller (ARDOUR::EngineStateController::instance() ); diff --git a/gtk2_ardour/session_dialog.logic.h b/gtk2_ardour/session_dialog.logic.h index b18c63b468..14b32795a5 100644 --- a/gtk2_ardour/session_dialog.logic.h +++ b/gtk2_ardour/session_dialog.logic.h @@ -80,9 +80,13 @@ void on_recent_session_double_click (WavesButton*); void on_system_configuration (WavesButton*); bool on_delete_event (GdkEventAny*); - + + void on_system_configuration_change(); void redisplay_system_configuration(); int redisplay_recent_sessions (); void session_selected (); bool info_scroller_update(); + +// connections + PBD::ScopedConnectionList _system_config_update; // };