The Flagship
http://ardour.org
This works around a race-condition, calling d'tors from two threads concurrently. The GUI thread destroys ctrl surfaces. ~~MIDIControllable() calls ::drop_external_control() -> ::midi_forget() This unsubscribes from signals (notably MIDI::Parser events) by calling ScopedConnection::disconnect(), Connection::disconnect(). At the same time auto_connect_thread can call PortManager::clear_pending_port_deletions() which removes the MIDI port and destorys the MIDI::Parser. ~Parser() calls Connection::signal_going_away() to invalidate connected signals. This can deadlock if it is called concurrently with Connection::disconnect() on the same signal. see also https://discourse.ardour.org/t/ardour-session-close-hangs/106523/10 |
||
---|---|---|
doc | ||
gtk2_ardour | ||
headless | ||
libs | ||
luasession | ||
msvc_extra_headers | ||
MSVCardour3 | ||
MSVCMixbus3 | ||
MSVCvst_scan | ||
nutemp | ||
session_utils | ||
share | ||
tools | ||
.dir-locals.el | ||
.gitattributes | ||
.gitignore | ||
ardour.1 | ||
COPYING | ||
instant.xml.sae | ||
msvc32-fixup.pl | ||
nutempo-todo | ||
PACKAGER_README | ||
README | ||
README-GITHUB.txt | ||
system_config | ||
testfile.flac | ||
testfile.ogg | ||
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