From d20552c49d9fd6a2075ebd7d46b0b133c69f1dbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= <gustaf@hanicef.me>
Date: Sun, 5 Jan 2025 15:58:18 +0100
Subject: [PATCH] Adjust slack based on precision

---
 src/sdl/i_system.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index 4d62c42875..18a5cb46d2 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -2310,9 +2310,9 @@ void I_SleepDuration(precise_t duration)
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__HAIKU__)
 	UINT64 precision = I_GetPrecisePrecision();
 	precise_t dest = I_GetPreciseTime() + duration;
-	if (duration > 100000)
+	if (duration * 100000 / precision > 1)
 	{
-		duration -= 100000; // 0.1 ms slack
+		duration -= (precision / 10000); // 0.1 ms slack
 		struct timespec ts = {
 			.tv_sec = duration / precision,
 			.tv_nsec = duration * 1000000000 / precision % 1000000000,
-- 
GitLab