From b6ba83466911bc6bf917aec6f8ae1bec15f09c28 Mon Sep 17 00:00:00 2001 From: KIRA Ryouta Date: Fri, 16 Feb 2024 11:36:06 +0900 Subject: [PATCH] Improved check in garbage collection --- src/sfizz/FilePool.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sfizz/FilePool.cpp b/src/sfizz/FilePool.cpp index 37dc2ff2..86310940 100644 --- a/src/sfizz/FilePool.cpp +++ b/src/sfizz/FilePool.cpp @@ -694,10 +694,14 @@ void sfz::FilePool::triggerGarbageCollection() noexcept // do garbage collection when changing the status is success if (data.status.compare_exchange_strong(status, FileData::Status::GarbageCollecting)) { - data.availableFrames = 0; - garbageToCollect.push_back(std::move(data.fileData)); - data.status = FileData::Status::Preloaded; - return true; + // recheck readerCount + auto readerCount = data.readerCount.load(); + if (readerCount == 0) { + data.availableFrames = 0; + garbageToCollect.push_back(std::move(data.fileData)); + return true; + } + data.status = status; } return false; });