13
0
livetrax/libs/backends/jack
Paul Davis 3c857a78c6 JACK backend: serialize all jack server calls with a mutex
As was noted in 88ee3af3ea it is unsafe/undefined behavior if two threads
sleep on the JACK request file descriptor, since there is no way to control
which one will wake and process the request. Since each thread may have
sent a different request, this can lead to a thread misinterpreting the
response because it is reading the wrong response.

This may (or may not) solve some subtle problems with JACK, but was
revealed by having a control surface (LaunchPad Pro) that registers
three ports from the butler thread at about the same as the GUI
thread is registering the auditioner. One thread read the wrong
response, and because of some slightly weird code/design, it attempts
to rename the port from within the response handler, which in JACK1
leads to deadlock (and later, zombification).
2023-09-13 09:20:41 -06:00
..
jack_api.cc switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr 2023-03-24 14:19:15 -06:00
jack_audiobackend.cc JACK backend: serialize all jack server calls with a mutex 2023-09-13 09:20:41 -06:00
jack_audiobackend.h JACK backend: serialize all jack server calls with a mutex 2023-09-13 09:20:41 -06:00
jack_connection.cc
jack_connection.h
jack_portengine.cc JACK backend: serialize all jack server calls with a mutex 2023-09-13 09:20:41 -06:00
jack_session.cc JACK: fix reported tempo & meter when functioning as JACK timebase master 2023-06-12 12:10:26 -06:00
jack_session.h
jack_utils.cc
jack_utils.h
weak_libjack.c
weak_libjack.def
weak_libjack.h
wscript