Fixed luckup bug

This commit is contained in:
Ryzerth 2020-12-25 18:17:43 +01:00
parent a33fe5a4cc
commit bb7965b3c4

View File

@ -38,10 +38,7 @@ namespace dsp {
swapCV.wait(lck, [this]{ return (canSwap || writerStop); }); swapCV.wait(lck, [this]{ return (canSwap || writerStop); });
// If writer was stopped, abandon operation // If writer was stopped, abandon operation
if (writerStop) { if (writerStop) { return false; }
writerStop = false;
return false;
}
// Swap buffers // Swap buffers
dataSize = size; dataSize = size;
@ -66,23 +63,22 @@ namespace dsp {
std::unique_lock<std::mutex> lck(rdyMtx); std::unique_lock<std::mutex> lck(rdyMtx);
rdyCV.wait(lck, [this]{ return (dataReady || readerStop); }); rdyCV.wait(lck, [this]{ return (dataReady || readerStop); });
// If stopped, abort return (readerStop ? -1 : dataSize);
if (readerStop) {
readerStop = false;
return -1;
}
dataReady = false;
return dataSize;
} }
void flush() { void flush() {
// Clear data ready
{
std::lock_guard<std::mutex> lck(rdyMtx);
dataReady = false;
}
// Notify writer that buffers can be swapped // Notify writer that buffers can be swapped
{ {
std::lock_guard<std::mutex> lck(swapMtx); std::lock_guard<std::mutex> lck(swapMtx);
canSwap = true; canSwap = true;
} }
swapCV.notify_all(); swapCV.notify_all();
} }