Fix jack2 input-port monitoring
Port_connect must be called with correct order (src, dst), and may only be called after the client is active. jack2 reported errors: > Destination port in attempted (dis)connection of ardour:physical_input_monitor_enable and system:capture_1 is not an input port > Cannot connect ports owned by inactive clients: "ardour" is not active
This commit is contained in:
@@ -740,11 +740,6 @@ PortManager::reestablish_ports ()
|
|||||||
|
|
||||||
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance()->current_backend_name() == X_("JACK")) {
|
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance()->current_backend_name() == X_("JACK")) {
|
||||||
PortEngine::PortHandle ph = port_engine().register_port (X_("physical_input_monitor_enable"), DataType::AUDIO, ARDOUR::PortFlags (IsInput|IsTerminal|Hidden));
|
PortEngine::PortHandle ph = port_engine().register_port (X_("physical_input_monitor_enable"), DataType::AUDIO, ARDOUR::PortFlags (IsInput|IsTerminal|Hidden));
|
||||||
std::vector<std::string> audio_ports;
|
|
||||||
get_physical_inputs (DataType::AUDIO, audio_ports);
|
|
||||||
for (std::vector<std::string>::iterator p = audio_ports.begin(); p != audio_ports.end(); ++p) {
|
|
||||||
port_engine().connect (ph, *p);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update_input_ports (true);
|
update_input_ports (true);
|
||||||
@@ -787,6 +782,15 @@ PortManager::reconnect_ports ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance()->current_backend_name() == X_("JACK")) {
|
||||||
|
std::string const our_name = AudioEngine::instance()->make_port_name_non_relative (X_("physical_input_monitor_enable"));
|
||||||
|
std::vector<std::string> audio_ports;
|
||||||
|
get_physical_inputs (DataType::AUDIO, audio_ports);
|
||||||
|
for (std::vector<std::string>::iterator p = audio_ports.begin(); p != audio_ports.end(); ++p) {
|
||||||
|
port_engine().connect (*p, our_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user