Robin Gareus ee8e8da614 Stop auto-connect thread before terminating ctrl surfaces
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
2021-11-20 23:14:42 +01:00
2021-10-30 23:02:35 +02:00
2020-10-18 17:45:32 +02:00
2020-07-06 21:36:12 +02:00
2021-03-23 23:27:45 +01:00
2020-01-25 04:07:41 +01:00
2021-08-16 04:26:55 +02:00

Please see the Ardour web site at https://ardour.org/ for all documentation..

For information on building ardour: 
      
     https://ardour.org/development.html
Description
No description provided
Readme 198 MiB
Languages
C++ 56.5%
C 39.6%
JavaScript 1.3%
Lua 0.9%
Python 0.6%
Other 0.9%