diff --git a/gtk2_ardour/startup_fsm.cc b/gtk2_ardour/startup_fsm.cc index 226bf290f8..de739b2272 100644 --- a/gtk2_ardour/startup_fsm.cc +++ b/gtk2_ardour/startup_fsm.cc @@ -98,7 +98,7 @@ StartupFSM::StartupFSM (EngineControl& amd) Application* app = Application::instance (); - app->ShouldQuit.connect (sigc::mem_fun (*this, &StartupFSM::queue_finish)); + app_quit_connection = app->ShouldQuit.connect (sigc::mem_fun (*this, &StartupFSM::queue_finish)); Gtkmm2ext::Keyboard::HideMightMeanQuit.connect (sigc::mem_fun (*this, &StartupFSM::dialog_hidden)); } diff --git a/gtk2_ardour/startup_fsm.h b/gtk2_ardour/startup_fsm.h index 519ada8ec0..50a06da1e2 100644 --- a/gtk2_ardour/startup_fsm.h +++ b/gtk2_ardour/startup_fsm.h @@ -85,7 +85,10 @@ class StartupFSM : public sigc::trackable void handle_path (std::string const & path); bool complete() const { return _state == NotWaiting; } - void set_complete () { _state = NotWaiting; } + void set_complete () { + app_quit_connection.disconnect (); + _state = NotWaiting; + } private: bool new_user; @@ -126,6 +129,7 @@ class StartupFSM : public sigc::trackable PluginScanDialog* plugin_scan_dialog; sigc::connection current_dialog_connection; + sigc::connection app_quit_connection; sigc::signal1 _signal_response;