Fixed status check order in garbage collection process

This commit is contained in:
KIRA Ryouta 2024-02-14 16:16:21 +09:00 committed by Paul Ferrand
parent 3164a6c502
commit f8f13f464c

View file

@ -678,12 +678,15 @@ void sfz::FilePool::triggerGarbageCollection() noexcept
sfz::FileData& data = it->second; sfz::FileData& data = it->second;
if (data.readerCount != 0)
return false;
auto status = data.status.load(); auto status = data.status.load();
if (data.availableFrames == 0) { if (data.availableFrames == 0) {
return status == FileData::Status::Preloaded || status == FileData::Status::FullLoaded; return status == FileData::Status::Preloaded || status == FileData::Status::FullLoaded;
} }
switch (status) { switch(status) {
case FileData::Status::Invalid: case FileData::Status::Invalid:
case FileData::Status::Streaming: case FileData::Status::Streaming:
return false; return false;
@ -691,9 +694,6 @@ void sfz::FilePool::triggerGarbageCollection() noexcept
break; break;
} }
if (data.readerCount != 0)
return false;
const auto secondsIdle = std::chrono::duration_cast<std::chrono::seconds>(now - data.lastViewerLeftAt).count(); const auto secondsIdle = std::chrono::duration_cast<std::chrono::seconds>(now - data.lastViewerLeftAt).count();
if (secondsIdle < config::fileClearingPeriod) if (secondsIdle < config::fileClearingPeriod)
return false; return false;