diff --git a/include/AudioEngine.h b/include/AudioEngine.h index 5e94ea6a2..923bc0092 100644 --- a/include/AudioEngine.h +++ b/include/AudioEngine.h @@ -410,7 +410,7 @@ private: bool m_clearSignal; - std::mutex m_changeMutex; + std::recursive_mutex m_changeMutex; friend class Engine; friend class AudioEngineWorkerThread; diff --git a/src/core/AudioEngine.cpp b/src/core/AudioEngine.cpp index 8bb8648ac..8e4cc8e29 100644 --- a/src/core/AudioEngine.cpp +++ b/src/core/AudioEngine.cpp @@ -66,8 +66,7 @@ namespace lmms using LocklessListElement = LocklessList::Element; -static thread_local bool s_renderingThread; -static thread_local bool s_runningChange; +static thread_local bool s_renderingThread = false; @@ -758,16 +757,14 @@ void AudioEngine::removePlayHandlesOfTypes(Track * track, PlayHandle::Types type void AudioEngine::requestChangeInModel() { - if (s_renderingThread || s_runningChange) { return; } + if (s_renderingThread) { return; } m_changeMutex.lock(); - s_runningChange = true; } void AudioEngine::doneChangeInModel() { - if (s_renderingThread || !s_runningChange) { return; } + if (s_renderingThread) { return; } m_changeMutex.unlock(); - s_runningChange = false; } bool AudioEngine::isAudioDevNameValid(QString name)