X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsession.cc;h=af52163ae9684bd9cf86afc3d595a09d7ce3fca7;hb=f1a93bc8a15b91be45ac2041d8e9e921f3dc4330;hp=d45375fe0dee2e0f840189fa691367c34cd10b6c;hpb=f7586f3a0d3492a15cae901bb209f6a983e7db0a;p=ardour.git diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index d45375fe0d..af52163ae9 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -257,6 +257,7 @@ Session::Session (AudioEngine &eng, , _step_editors (0) , _suspend_timecode_transmission (0) , _speakers (new Speakers) + , _order_hint (0) , ignore_route_processor_changes (false) , _midi_ports (0) , _mmc (0) @@ -558,10 +559,10 @@ Session::setup_ltc () { XMLNode* child = 0; - _ltc_input.reset (new IO (*this, _("LTC In"), IO::Input)); - _ltc_output.reset (new IO (*this, _("LTC Out"), IO::Output)); + _ltc_input.reset (new IO (*this, X_("LTC In"), IO::Input)); + _ltc_output.reset (new IO (*this, X_("LTC Out"), IO::Output)); - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-In")) != 0) { + if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC In"))) != 0) { _ltc_input->set_state (*(child->children().front()), Stateful::loading_state_version); } else { { @@ -571,7 +572,7 @@ Session::setup_ltc () reconnect_ltc_input (); } - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-Out")) != 0) { + if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC Out"))) != 0) { _ltc_output->set_state (*(child->children().front()), Stateful::loading_state_version); } else { { @@ -585,21 +586,30 @@ Session::setup_ltc () * IO style of NAME/TYPE-{in,out}N */ - _ltc_input->nth (0)->set_name (_("LTC-in")); - _ltc_output->nth (0)->set_name (_("LTC-out")); + _ltc_input->nth (0)->set_name (X_("LTC-in")); + _ltc_output->nth (0)->set_name (X_("LTC-out")); } void Session::setup_click () { - XMLNode* child = 0; - _clicking = false; - _click_io.reset (new ClickIO (*this, "click")); + _click_io.reset (new ClickIO (*this, X_("Click"))); _click_gain.reset (new Amp (*this)); _click_gain->activate (); + if (state_tree) { + setup_click_state (state_tree->root()); + } else { + setup_click_state (0); + } +} + +void +Session::setup_click_state (const XMLNode* node) +{ + const XMLNode* child = 0; - if (state_tree && (child = find_named_node (*state_tree->root(), "Click")) != 0) { + if (node && (child = find_named_node (*node, "Click")) != 0) { /* existing state for Click */ int c = 0; @@ -1690,7 +1700,7 @@ Session::resort_routes_using (boost::shared_ptr r) DEBUG_TRACE (DEBUG::Graph, "Routes resorted, order follows:\n"); for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { DEBUG_TRACE (DEBUG::Graph, string_compose ("\t%1 signal order %2\n", - (*i)->name(), (*i)->order_key (MixerSort))); + (*i)->name(), (*i)->order_key ())); } #endif @@ -1975,7 +1985,7 @@ Session::auto_connect_route (boost::shared_ptr route, ChanCount& existing for (uint32_t i = output_start.get(*t); i < route->n_outputs().get(*t); ++i) { string port; - if ((*t) == DataType::MIDI || Config->get_output_auto_connect() & AutoConnectPhysical) { + if ((*t) == DataType::MIDI && Config->get_output_auto_connect() & AutoConnectPhysical) { port = physoutputs[(out_offset.get(*t) + i) % nphysical_out]; } else if ((*t) == DataType::AUDIO && Config->get_output_auto_connect() & AutoConnectMaster) { /* master bus is audio only */ @@ -2326,6 +2336,11 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool ChanCount existing_outputs; uint32_t order = next_control_id(); + if (_order_hint != 0) { + order = _order_hint; + _order_hint = 0; + } + count_existing_track_channels (existing_inputs, existing_outputs); { @@ -2387,15 +2402,13 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool ID in most situations. */ - if (!r->has_order_key (EditorSort)) { + if (!r->has_order_key ()) { if (r->is_auditioner()) { /* use an arbitrarily high value */ - r->set_order_key (EditorSort, UINT_MAX); - r->set_order_key (MixerSort, UINT_MAX); + r->set_order_key (UINT_MAX); } else { DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("while adding, set %1 to order key %2\n", r->name(), order)); - r->set_order_key (EditorSort, order); - r->set_order_key (MixerSort, order); + r->set_order_key (order); order++; } } @@ -3706,7 +3719,7 @@ Session::RoutePublicOrderSorter::operator() (boost::shared_ptr a, boost:: if (b->is_monitor()) { return false; } - return a->order_key (MixerSort) < b->order_key (MixerSort); + return a->order_key () < b->order_key (); } bool @@ -4943,8 +4956,7 @@ Session::notify_remote_id_change () } switch (Config->get_remote_model()) { - case MixerSort: - case EditorSort: + case MixerOrdered: Route::RemoteControlIDChange (); /* EMIT SIGNAL */ break; default: @@ -4953,7 +4965,7 @@ Session::notify_remote_id_change () } void -Session::sync_order_keys (RouteSortOrderKey sort_key_changed) +Session::sync_order_keys () { if (deletion_in_progress()) { return; @@ -4965,9 +4977,9 @@ Session::sync_order_keys (RouteSortOrderKey sort_key_changed) opportunity to keep them in sync if they wish to. */ - DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("Sync Order Keys, based on %1\n", enum_2_string (sort_key_changed))); + DEBUG_TRACE (DEBUG::OrderKeys, "Sync Order Keys.\n"); - Route::SyncOrderKeys (sort_key_changed); /* EMIT SIGNAL */ + Route::SyncOrderKeys (); /* EMIT SIGNAL */ DEBUG_TRACE (DEBUG::OrderKeys, "\tsync done\n"); }