Removed the garbage collection thread from the synth

This commit is contained in:
paulfd 2019-08-29 10:49:18 +02:00
parent 4452b2c5f5
commit c151edaedf
2 changed files with 16 additions and 18 deletions

View file

@ -23,13 +23,11 @@ public:
{
for (int i = 0; i < config::numVoices; ++i)
voices.push_back(std::make_unique<Voice>(ccState));
garbageCollectionThread = std::thread(&Synth::garbageCollection, this);
}
~Synth()
{
threadsShouldQuit = true;
garbageCollectionThread.join();
}
bool loadSfzFile(const std::filesystem::path& file) final;
@ -131,7 +129,21 @@ public:
void pitchWheel(int delay, int channel, int pitch);
void aftertouch(int delay, int channel, uint8_t aftertouch);
void tempo(int delay, float secondsPerQuarter);
void getNumActiveVoices() const
{
auto activeVoices { 0 };
for (const auto& voice : voices) {
if (!voice->isFree())
activeVoices++;
}
}
void garbageCollect()
{
for (auto& voice : voices) {
voice->garbageCollect();
}
}
protected:
void callback(std::string_view header, const std::vector<Opcode>& members) final;
@ -146,20 +158,6 @@ private:
return freeVoice->get();
}
void garbageCollection()
{
while (!threadsShouldQuit) {
auto activeVoices { 0 };
for (auto& voice : voices) {
voice->garbageCollect();
if (!voice->isFree())
activeVoices++;
}
DBG("Active voices:" << activeVoices << " | Stray buffers: " << FilePool::getFileBuffers());
std::this_thread::sleep_for(200ms);
}
}
bool hasGlobal { false };
bool hasControl { false };
int numGroups { 0 };

View file

@ -71,7 +71,7 @@ public:
dataReady.store(true);
}
bool isFree()
bool isFree() const
{
return (region == nullptr);
}