Use recursive mutex for requestChangeInModel/doneChangeInModel (#7359)

* Make model change mutex recursive

* Initialize s_renderingThread
This commit is contained in:
saker
2024-06-30 14:54:20 -04:00
committed by GitHub
parent 286e62adf5
commit 13a05b99d3
2 changed files with 4 additions and 7 deletions

View File

@@ -410,7 +410,7 @@ private:
bool m_clearSignal;
std::mutex m_changeMutex;
std::recursive_mutex m_changeMutex;
friend class Engine;
friend class AudioEngineWorkerThread;

View File

@@ -66,8 +66,7 @@ namespace lmms
using LocklessListElement = LocklessList<PlayHandle*>::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)