summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-09 13:17:53 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-09 15:17:42 -0400
commit56465fda106a7350741d476282abee68da94b9bb (patch)
tree1cd16f7b2247170dd85a4a333d8a61b308eb8df2 /libs/ardour/session.cc
parentcd6a9cfe38e78665e9de8c51392098bcbf4cc39b (diff)
move engine dialog from a widget to an actual dialog; emit Session::AudioEngineSetupRequired when loading a session if it is necessary
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 4dc5a07a77..2d57fcfba8 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -106,6 +106,7 @@ using namespace PBD;
bool Session::_disable_all_loaded_plugins = false;
+PBD::Signal0<int> Session::AudioEngineSetupRequired;
PBD::Signal1<void,std::string> Session::Dialog;
PBD::Signal0<int> Session::AskAboutPendingState;
PBD::Signal2<int, framecnt_t, framecnt_t> Session::AskAboutSampleRateMismatch;
@@ -154,6 +155,17 @@ Session::Session (AudioEngine &eng,
, _have_rec_enabled_track (false)
, _suspend_timecode_transmission (0)
{
+ if (_engine.current_backend() == 0 || _engine.setup_required()) {
+ boost::optional<int> r = AudioEngineSetupRequired ();
+ if (r.get_value_or (-1) != 0) {
+ throw failed_constructor();
+ }
+ }
+
+ if (!_engine.connected()) {
+ throw failed_constructor();
+ }
+
_locations = new Locations (*this);
ltc_encoder = NULL;
@@ -175,10 +187,6 @@ Session::Session (AudioEngine &eng,
interpolation.add_channel_to (0, 0);
- if (!eng.connected()) {
- throw failed_constructor();
- }
-
n_physical_outputs = _engine.n_physical_outputs ();
n_physical_inputs = _engine.n_physical_inputs ();