To avoid a race condition between the gui thread which destroys the
samplebuffer and the mixer thread which increases the buffer's ref-
count, we'll make sure to touch the ref-count only when wh're synced
with the mixer.
NotePlayHandleManager::acquire uses a read lock unless the pool is empty.
If two threads try to acquire NotePlayHandle simultaneously
when the value of s_availableIndex is 1, one thread will try to read s_available[-1].
If the acquire action and the release action are done at the same time,
NotePlayHandleManager::acquire may try to read data
before NotePlayHandleManager::release actually writes.
This commit prevents them by always using the write lock when acquiring a NotePlayHandle.
* fix hanging mouse in piano roll (#4822)
* fix hanging mouse in automation & pianoroll (#4822);
* fix hanging mouse in automation & pianoroll (#4822)
removed TODO comment that I forgot in the code
@lukas-w reminds in 134dae8 comments that X11Extras help Linux users of
VST effects #3786. Now LMMS builds and runs on Weston without X11
dependencies, though only if WANT_VST is off.
Other changes:
* Update TCO position more exact when a drag leaves a TCO and enters `TrackContentWidget` (required to detect that the cursor has really moved when leaving a TCO with length < 1 to the right)
* Use exact length when samples are loaded, don't round it up
* Reset size when reloading same file
Fix some assumptions that source and target of a drag actions are the same
track container. Instead of looking up necessary information (track name,
type and container id) by track index, add it to the metadata.
Refactor canPasteSelection to take QDropEvent instead of the drop event's
QMimeData. Coincidentally, this fixes the method to be consistent with its
documentation.
Fixes#4844
* Fix uninitialized m_jackClient being used in MidiJack destructor
* Fix destruction order in Mixer.cpp so that MidiJack doesn't access the
deleted AudioJack instance
Fixes#4688
* If we find NaN/inf, we declare the whole buffer bad and set it to 0.0f. This
is because the noise leading up to, or coming from, an infinite or NaN value
is often very large and will create problems later in the sound chain. Especially
if it hits a delay based fx with feedback.
* We bump the clipping level to +/-10.0f.
Really short notes doesn't work well with delay based effects with the default
decay settings of the FX autoquit system where the effect can cut out. Set
autoquit as disabled by default.
Decay and Gate knobs are now also disabled when autoquit is disabled.