diff --git a/src/AudioHost.cpp b/src/AudioHost.cpp index 3cdb7cc..845302a 100644 --- a/src/AudioHost.cpp +++ b/src/AudioHost.cpp @@ -2119,7 +2119,11 @@ public: if (this->audioDriver != nullptr) { - result.cpuUsage_ = audioDriver->CpuUse(); + result.cpuUsage_ = audioDriver->CpuUse(); + if (!std::isfinite(result.cpuUsage_)) + { + result.cpuUsage_ = 0.0f; + } } GetCpuFrequency(&result.cpuFreqMin_, &result.cpuFreqMax_); result.hasCpuGovernor_ = HasCpuGovernor(); diff --git a/src/CpuUse.hpp b/src/CpuUse.hpp index e2dedac..d5b96d2 100644 --- a/src/CpuUse.hpp +++ b/src/CpuUse.hpp @@ -140,14 +140,19 @@ namespace pipedal overheadTime = readTime; } - SampleT totalTime = writeTime+ readTime + processingTime; - SampleT maxTime = waitTime+processingTime; - + SampleT totalTime = writeTime + readTime + processingTime; + SampleT maxTime = waitTime + processingTime; - float result = 100.0f*(processingTime)/(maxTime); - float overhead = 100.0F*(overheadTime*2)/totalTime; + float result = 0.0f; + float overhead = 0.0f; + if (maxTime != 0 && totalTime != 0) { - std::lock_guard lock { sync}; + result = 100.0f * (processingTime) / (maxTime); + overhead = 100.0f * (overheadTime * 2) / totalTime; + } + + { + std::lock_guard lock{sync}; currentCpuUse = result; currentOverhead = overhead; }