13
0
livetrax/libs
Paul Davis 166ac63924 waveview: redesign thread exit strategy
The previous design had a race condition. When WaveViewThreads::stop_threads() was called, it would
first acquire the mutex, then set _quit, then call condition.broadcast(). But worker threads would
check _quit without holding the mutex. It was therefore for a thread to be delayed in its
own lock acquisition by the ::stop_threads() caller, then end up back in cond.wait() AFTER
the cond.broadcast() was done. Such a thread would sleep forever and never wake up.

This new design removes WaveViewDrawRequestQueue, which was a clean encapsulation of the
queueing aspects of WaveViewThreads, but unfortunately made correct mutex acquisition
and condition signalling/waiting needlessly complex. THe mutex, condition variable
and actual queue were moved into WaveViewThreads, and all worker threads execute a method
of the class which gives the appropriate code easy access to the mutex and condition var,
which must always be used together.
2021-05-10 21:41:26 -06:00
..
appleutility NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
ardour when adding locations with empty names, generate one (related to 1c753a7f38) 2021-05-09 17:52:29 -06:00
ardouralsautil Fix C function prototypes 2020-12-01 12:08:09 +01:00
audiographer Fix realtime export loudness normalization 2021-04-29 19:05:09 +02:00
backends Remove unused #include<> (2/2) 2021-05-05 17:57:16 +02:00
canvas Remove unused #include<> (2/2) 2021-05-05 17:57:16 +02:00
clearlooks-newer Special case checkbox border color in Treeview 2020-01-25 03:40:04 +01:00
evoral support SMF markers without labels 2021-05-09 17:52:29 -06:00
fluidsynth Update to fluidsynth-2.2 2021-04-18 22:02:57 +02:00
fst Fix typo in vst3-scanner --help text 2021-01-23 23:43:14 +01:00
gtkmm2ext Remove unused #include<> (2/2) 2021-05-05 17:57:16 +02:00
hidapi remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
libltc Fix use of doxygen documented parameters in running text 2019-09-30 06:30:11 +02:00
lua Fix Lua bindings for C++17/C++20 -- #8683 2021-05-02 16:36:30 +02:00
midi++2 Remove unused #include<> (2/2) 2021-05-05 17:57:16 +02:00
panners Micro-optimization: pre-calculate pan-law 2021-01-18 16:14:16 +01:00
pbd Fix incorrect port lists due to custom sort 2021-05-07 04:24:32 +02:00
plugins a-delay: BPM is independent of the meter (quarter notes / min) 2021-03-28 18:23:07 +02:00
ptformat ptformat: Update to upstream 232ba25 2021-01-17 13:19:54 +11:00
qm-dsp Do not install static libs 2020-01-22 02:00:25 +01:00
surfaces copy over (boo!) transport control changes to BasicUI (control surfaces) 2021-05-08 09:20:21 -06:00
temporal Fix normalization in Temporal::Beats for times between -1 and 0 beats 2020-11-18 13:40:31 -07:00
vamp-plugins Export analysis: log loudness / time 2021-04-07 01:46:02 +02:00
vamp-pyin Fix -Wsign-compare 2019-09-03 05:01:59 +02:00
vfork Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
vst3 Backport VST3 diagnostic pragma 2021-03-01 22:14:38 +01:00
waveview waveview: redesign thread exit strategy 2021-05-10 21:41:26 -06:00
widgets Prevent invalid frame/child size allocation 2021-05-08 14:36:43 +02:00
zita-convolver zita-convolver: fix hang at when re-loading state 2021-03-30 01:29:28 +02:00
zita-resampler NO-OP fix typo in comment and header guard 2020-03-26 19:00:41 +01:00