Files
ardour/libs
Robin Gareus 19c44fe814 Fix restoring metronome connections (duplicate IO set_state)
When a session is loaded, click_io->set_state is called twice.
setup_click() is called when the engine re/starts, and
possibly again from Session::set_state.

During session construction, Port connections are not directly
made. Port::set_state just creates a list, which is later
applied by Port::reconnect from Session::hookup_io.

However, the second call to IO::set_state() calls IO::ensure_ports
again. Since the port already exists, this calls
Port::disconnect_all (while holding the process lock).

Even though the port is not connected at this point in time,
this triggers a ARDOUR::PortManager::connect_callback which
is emitted from the Audioengine when the process-lock is released.

While IO::set_state() continues to set Port::state, and fill
the Port::_[ext_]connections lists, this data is invalidated
moments later when the engine resumes and ::connect_callback
calls ARDOUR::Port::port_connected_or_disconnected.

The solution is to simply not call Port::disconnect_all
if the connection is not yet made (Session::InitialConnecting)
2023-06-22 13:28:18 +02:00
..
2023-05-22 04:50:19 +02:00
2023-06-21 23:59:49 +02:00
2023-05-03 15:38:42 +02:00
2023-04-01 17:21:32 +02:00
2022-08-03 12:10:01 -06:00
2022-09-21 19:09:55 -06:00
2023-03-25 07:46:47 +01:00
2023-02-08 02:03:54 +01:00