Skip to content

Commit 8df0c62

Browse files
committed
Fix JackEngineControl::CalcCPULoad for max value
Signed-off-by: falkTX <[email protected]>
1 parent fe24250 commit 8df0c62

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

common/JackEngineControl.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,
6363

6464
// Each time we have a full set of iterations, recompute the current
6565
// usage from the latest JACK_ENGINE_ROLLING_COUNT client entries.
66-
if (fRollingClientUsecsCnt && (fRollingClientUsecsIndex == 0)) {
66+
if (fRollingClientUsecsCnt && (fRollingClientUsecsIndex == 0 || fRollingClientUsecsCnt == fRollingInterval)) {
6767
jack_time_t avg_usecs = 0;
6868
jack_time_t max_usecs = 0;
6969

@@ -74,6 +74,12 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,
7474

7575
fMaxUsecs = JACK_MAX(fMaxUsecs, max_usecs);
7676

77+
if (fRollingClientUsecsCnt == fRollingInterval)
78+
{
79+
fMaxUsecs = max_usecs;
80+
fRollingClientUsecsCnt = 0;
81+
}
82+
7783
if (max_usecs < ((fPeriodUsecs * 95) / 100)) {
7884
// Average the values from our JACK_ENGINE_ROLLING_COUNT array
7985
fSpareUsecs = (jack_time_t)(fPeriodUsecs - (avg_usecs / JACK_ENGINE_ROLLING_COUNT));
@@ -83,7 +89,7 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,
8389
}
8490

8591
fCPULoad = ((1.f - (float(fSpareUsecs) / float(fPeriodUsecs))) * 50.f + (fCPULoad * 0.5f));
86-
fMaxCPULoad = 1.f - (float(fMaxUsecs) / float(fPeriodUsecs));
92+
fMaxCPULoad = (1.f - float(fMaxUsecs < fPeriodUsecs ? fPeriodUsecs - fMaxUsecs : 0) / float(fPeriodUsecs)) * 100.f;
8793
}
8894

8995
fRollingClientUsecsCnt++;

common/JackEngineControl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem
7676
jack_time_t fMaxUsecs;
7777
jack_time_t fRollingClientUsecs[JACK_ENGINE_ROLLING_COUNT];
7878
unsigned int fRollingClientUsecsCnt;
79-
int fRollingClientUsecsIndex;
80-
int fRollingInterval;
79+
unsigned int fRollingClientUsecsIndex;
80+
unsigned int fRollingInterval;
8181
float fCPULoad;
8282
float fMaxCPULoad;
8383

0 commit comments

Comments
 (0)