improved mutex locking - less xruns when seeking

especially in JACK and macOS
This commit is contained in:
tildearrow 2022-03-23 21:38:28 -05:00
parent 11d9ce3f87
commit 711b60d454
5 changed files with 147 additions and 134 deletions

View file

@ -733,14 +733,14 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
}
if (active) quitDispatch();
isBusy.lock();
BUSY_BEGIN_SOFT;
saveLock.lock();
song.unload();
song=ds;
recalcChans();
renderSamples();
saveLock.unlock();
isBusy.unlock();
BUSY_END;
if (active) {
initDispatch();
syncReset();
@ -1236,14 +1236,14 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
}
if (active) quitDispatch();
isBusy.lock();
BUSY_BEGIN_SOFT;
saveLock.lock();
song.unload();
song=ds;
recalcChans();
renderSamples();
saveLock.unlock();
isBusy.unlock();
BUSY_END;
if (active) {
initDispatch();
syncReset();
@ -1602,14 +1602,14 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) {
ds.insLen=ds.ins.size();
if (active) quitDispatch();
isBusy.lock();
BUSY_BEGIN_SOFT;
saveLock.lock();
song.unload();
song=ds;
recalcChans();
renderSamples();
saveLock.unlock();
isBusy.unlock();
BUSY_END;
if (active) {
initDispatch();
syncReset();