Timer: Use pause intrinsics when spin-sleeping

Hopefully reduce power a tiny amount?
This commit is contained in:
Stenzek committed 2026-09-21 14:32:37 +10:00
1 parent bce5e3ddce
commit 73b571c4b7
1 file changed
+15 -5
+15 -5
View File
@@ -1,8 +1,10 @@
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
// SPDX-FileCopyrightText: 2019-2026 Connor McLaughlin <stenzek@gmail.com>
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
#include "timer.h"
#include "intrin.h"
#include "types.h"
#include <cstdio>
#include <cstdlib>
@@ -117,13 +119,17 @@ void Timer::SleepUntil(Value value, bool exact)
const Value wake_at = value - ConvertMillisecondsToValue(0.5);
Value current = GetCurrentValue();
if (wake_at > current)
{
SleepUntil(wake_at, false);
current = GetCurrentValue();
}
// And spin off whatever time is left.
do
while (current < value)
{
MultiPause();
current = GetCurrentValue();
} while (current < value);
}
}
else
{
@@ -205,13 +211,17 @@ void Timer::SleepUntil(Value value, bool exact)
const Value wake_at = value - min_sleep_time;
Value current = GetCurrentValue();
if (wake_at > current)
{
SleepUntil(wake_at, false);
current = GetCurrentValue();
}
// And spin off whatever time is left.
do
while (current < value)
{
MultiPause();
current = GetCurrentValue();
} while (current < value);
}
}
else
{