mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-29 16:33:14 +01:00
Mirror of Ardour Source Code
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) |
||
|---|---|---|
| doc | ||
| gtk2_ardour | ||
| headless | ||
| libs | ||
| luasession | ||
| msvc_extra_headers | ||
| MSVCardour3 | ||
| MSVCMixbus3 | ||
| MSVCvst_scan | ||
| session_utils | ||
| share | ||
| tools | ||
| .dir-locals.el | ||
| .gitattributes | ||
| .gitignore | ||
| ardour.1 | ||
| COPYING | ||
| nutempo-todo | ||
| PACKAGER_README | ||
| README | ||
| README-GITHUB.txt | ||
| system_config | ||
| TRANSLATORS | ||
| waf | ||
| wscript | ||
Please see the Ardour web site at https://ardour.org/ for all documentation..
For information on building ardour:
https://ardour.org/development.html