right place when it not played from the begining.
That has created a difference between the ticks and the metronome and
the sample track.
The cause of the problem was that the calculation of the frame to play
was wrong: we had calculated `framesPerTick` according to the current
engine's sample rate instead of the SampleBuffer's sample rate.
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
As of https://github.com/probonopd/linuxdeployqt/pull/370/,
the AppRun of linuxdeployqt unsets LD_LIBRARY_PATH.
This behavior isn't suitable for our cases, so we use
the extracted binary directly as a workaround.
@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
* [Equalizer] Bright analyzer colors, opacity incr
Brightened spectrum analyzer colors and increased opacity a tad to make more visible
* Fixed RGB Value
* Update EqControlsDialog.cpp
* Fixed color change
* Changed colors again
* Fixed colors, now brighter and bluer
* Ok, its actually bright now lol
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
hallow clone may break version detection. This is fatal in Debian builds, so use full clone.
Note: This is safe for stable-1.2 but needs review after merging to master due to submodules. See #4888 for more information.
Fix a crash that occurred on the following steps:
1. Add an AFP track.
2. Open it, and move the waveform display to overlap the track label
button.
3. Close the AFP window and open it again by clicking the track label.
4. Move the mouse pointer.
The problem occurs because the code makes the implicit assumption that
AudioFileProcessorWaveView::enterEvent (and hence
QApplication::setOverrideCursor) is called before
AudioFileProcessorWaveView::mouseMoveEvent. This is not the case when
the waveform display is on top of the track label. In this case the AFP
windows is opened with the mouse being immediately positioned over the
wave form display. There is no enter event and move events are issues
directly. This then leads to a crash in
AudioFileProcessorWaveView::mouseMoveEvent when trying to determine the
value for is_size_cursor because the override cursor is still null but
is dereferenced directly without checking.
Only adding a check would not solve the problem because in that case the
cursor would not change to the hand cursor when being moved inside the
waveform display.
The solution is to remove all calls to the global methods
setOverrideCursor and restoreOverrideCursor and to only set the cursor
locally.
This fix is based on a patch by gi0e5b06 which is committed under 8a10c52
in his repository but for which he never created a pull request.
* 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