mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-10 15:36:24 +01:00
[Summary] Improved tracks reconnection logic which increases reconnection time up to 50% for tracks reconnection us cases
This commit is contained in:
parent
9c67a37f60
commit
f403f8de4e
5 changed files with 16 additions and 16 deletions
|
|
@ -139,7 +139,7 @@ public:
|
|||
void remove_session (); // not a replacement for SessionHandle::session_going_away()
|
||||
Session* session() const { return _session; }
|
||||
|
||||
void reconnect_session_routes ();
|
||||
void reconnect_session_routes (bool reconnect_inputs = true, bool reconnect_outputs = true);
|
||||
|
||||
class NoBackendAvailable : public std::exception {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -894,7 +894,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
|
|||
friend class AudioEngine;
|
||||
void set_block_size (pframes_t nframes);
|
||||
void set_frame_rate (framecnt_t nframes);
|
||||
void reconnect_existing_routes (bool withLock, bool reconnect_master = false);
|
||||
void reconnect_existing_routes (bool withLock, bool reconnect_master = true, bool reconnect_inputs = true, bool reconnect_outputs = true);
|
||||
|
||||
protected:
|
||||
friend class Route;
|
||||
|
|
|
|||
|
|
@ -572,10 +572,10 @@ AudioEngine::remove_session ()
|
|||
|
||||
|
||||
void
|
||||
AudioEngine::reconnect_session_routes()
|
||||
AudioEngine::reconnect_session_routes (bool reconnect_inputs, bool reconnect_outputs)
|
||||
{
|
||||
if (_session) {
|
||||
_session->reconnect_existing_routes(true, true);
|
||||
_session->reconnect_existing_routes(true, true, reconnect_inputs, reconnect_outputs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -882,7 +882,7 @@ EngineStateController::set_physical_audio_input_state(const std::string& port_na
|
|||
|
||||
if (found_state_iter != input_states.end() && found_state_iter->active != state ) {
|
||||
found_state_iter->active = state;
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(true, false);
|
||||
|
||||
InputConfigChanged();
|
||||
}
|
||||
|
|
@ -960,7 +960,7 @@ EngineStateController::set_physical_audio_output_state(const std::string& port_n
|
|||
}
|
||||
}
|
||||
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(false, true);
|
||||
OutputConfigChanged();
|
||||
}
|
||||
}
|
||||
|
|
@ -1086,7 +1086,7 @@ EngineStateController::set_state_to_all_inputs(bool state)
|
|||
}
|
||||
|
||||
if (something_changed) {
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(true, false);
|
||||
InputConfigChanged();
|
||||
}
|
||||
}
|
||||
|
|
@ -1111,7 +1111,7 @@ EngineStateController::set_state_to_all_outputs(bool state)
|
|||
}
|
||||
|
||||
if (something_changed) {
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(false, true);
|
||||
OutputConfigChanged();
|
||||
}
|
||||
}
|
||||
|
|
@ -1445,7 +1445,7 @@ EngineStateController::_refresh_stereo_out_channel_states()
|
|||
void
|
||||
EngineStateController::_on_engine_running ()
|
||||
{
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(true, true);
|
||||
_current_state->active = true;
|
||||
|
||||
EngineRunning(); // emit a signal
|
||||
|
|
@ -1471,7 +1471,7 @@ EngineStateController::_on_parameter_changed (const std::string& parameter_name)
|
|||
{
|
||||
if (parameter_name == "output-auto-connect") {
|
||||
|
||||
AudioEngine::instance()->reconnect_session_routes();
|
||||
AudioEngine::instance()->reconnect_session_routes(false, true);
|
||||
OutputConfigChanged(); // emit a signal
|
||||
OutputConnectionModeChanged(); // emit signal
|
||||
}
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ Session::Session (AudioEngine &eng,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
reconnect_existing_routes(true, true);
|
||||
reconnect_existing_routes(true);
|
||||
}
|
||||
|
||||
_is_new = false;
|
||||
|
|
@ -2141,7 +2141,7 @@ Session::auto_connect_route (boost::shared_ptr<Route> route, ChanCount& existing
|
|||
|
||||
|
||||
void
|
||||
Session::reconnect_existing_routes (bool withLock, bool reconnect_master)
|
||||
Session::reconnect_existing_routes (bool withLock, bool reconnect_master, bool reconnect_inputs, bool reconnect_outputs)
|
||||
{
|
||||
Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock (), Glib::Threads::NOT_LOCK);
|
||||
|
||||
|
|
@ -2151,8 +2151,8 @@ Session::reconnect_existing_routes (bool withLock, bool reconnect_master)
|
|||
|
||||
// We need to disconnect the route's inputs and outputs first
|
||||
// basing on autoconnect configuration
|
||||
bool reconnectIputs = !(Config->get_input_auto_connect() & ManualConnect);
|
||||
bool reconnectOutputs = !(Config->get_output_auto_connect() & ManualConnect);
|
||||
bool reconnectIputs = !(Config->get_input_auto_connect() & ManualConnect) && reconnect_inputs;
|
||||
bool reconnectOutputs = !(Config->get_output_auto_connect() & ManualConnect) && reconnect_outputs;
|
||||
|
||||
ChanCount existing_inputs;
|
||||
ChanCount existing_outputs;
|
||||
|
|
@ -2866,7 +2866,7 @@ Session::remove_route (boost::shared_ptr<Route> route)
|
|||
* Wave Tracks: reconnect routes
|
||||
*/
|
||||
if (ARDOUR::Profile->get_trx () ) {
|
||||
reconnect_existing_routes(true);
|
||||
reconnect_existing_routes(true, false);
|
||||
} else {
|
||||
resort_routes ();
|
||||
}
|
||||
|
|
@ -5232,7 +5232,7 @@ Session::notify_remote_id_change ()
|
|||
* TODO: move it to GUI
|
||||
*/
|
||||
if (ARDOUR::Profile->get_trx () ) {
|
||||
reconnect_existing_routes(true);
|
||||
reconnect_existing_routes(true, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue