The spinlocking on FilePool::emptyQueue is now integrated in the function
This commit is contained in:
parent
35d334bb73
commit
97a5d5ce90
3 changed files with 14 additions and 7 deletions
|
|
@ -174,3 +174,10 @@ void sfz::FilePool::clear()
|
|||
// Pop the queue
|
||||
}
|
||||
}
|
||||
|
||||
void sfz::FilePool::emptyFileLoadingQueue() noexcept
|
||||
{
|
||||
emptyQueue = true;
|
||||
while (emptyQueue)
|
||||
std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,8 +113,13 @@ public:
|
|||
*
|
||||
*/
|
||||
void clear();
|
||||
void emptyFileLoadingQueue() noexcept { emptyQueue = true; }
|
||||
bool shouldEmptyQueue() const noexcept { return emptyQueue; }
|
||||
/**
|
||||
* @brief Empty the file loading queue. This function will lock and wait
|
||||
* for the background thread to finish its business, so don't call it from
|
||||
* the audio thread.
|
||||
*
|
||||
*/
|
||||
void emptyFileLoadingQueue() noexcept;
|
||||
private:
|
||||
fs::path rootDirectory;
|
||||
struct FileLoadingInformation {
|
||||
|
|
|
|||
|
|
@ -533,12 +533,7 @@ void sfz::Synth::resetVoices(int numVoices)
|
|||
std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
|
||||
// Empty the file pool loading queue and spinlock on it
|
||||
filePool.emptyFileLoadingQueue();
|
||||
while (filePool.shouldEmptyQueue()) {
|
||||
std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
|
||||
voices.clear();
|
||||
for (int i = 0; i < numVoices; ++i)
|
||||
voices.push_back(std::make_unique<Voice>(midiState));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue