This atomically unsets the MidiJack reference in AudioJack right before
MidiJack is destroyed. This avoids AudioJack using a destroyed MidiJack
object.
This patch
* makes `m_stopped` atomic
* initializes `m_stopped` correctly to `true`
* moves the initialization of `m_stopped` to the point where jack ports
are already connected
* Support jack midi input
* If jack is used for audio then use the same connection for midi as well
* Remove old FreeBSD adjustment for portaudio as multiple version support has been dropped.
* Disable jack midi out port until it is functional
Moved AudioDevice::setupWidget into its own class AudioDeviceSetupWidget
which logically should belong to the GUI (unfortunately the include
structure does not make this obvious).
For the ALSA driver there is an implementation AudioAlsaSetupWidget
which provides a combo box for selection of the card and device.
All other driver widgets have been changed to inherit from
AudioAlsaSetupWidget but have not been changed otherwise.
SetupDialog has been adjusted to keep a map of AudioAlsaSetupWidgets
now.
Using QVector involves calls to malloc & friends which are not RT safe
and thus must not be used in AudioJack::processCallback(). Instead
allocate the required array upon initialization.
(cherry picked from commit ae7a4e4c2f13432d39b13c25b66231bdd6a1cc65)
There's been some more code that is only required if AUDIO_PORT_SUPPORT
is set. Added according #ifdefs and fixed a typo in AudioPort support
code.
(cherry picked from commit e98726ae992c77fb2dfdb6668319b5521ff8aaef)