From eb6b1f375a47232c617ec4b94e696f076a495729 Mon Sep 17 00:00:00 2001
From: Sally Coolatta <tehrealsalt@gmail.com>
Date: Wed, 27 Apr 2022 17:31:52 -0400
Subject: [PATCH] Allow dedicated to use precise sleep timing again

Instead of only using one old sleep, just enforce framerate cap to match TICRATE.
---
 src/d_main.c | 7 +------
 src/r_fps.c  | 7 +++++++
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/d_main.c b/src/d_main.c
index eb01edd9d8..6912ec9882 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -892,15 +892,10 @@ void D_SRB2Loop(void)
 		LUA_Step();
 
 		// Fully completed frame made.
-		if (!singletics && !dedicated)
+		if (!singletics)
 		{
 			I_FrameCapSleep(frameEnd);
 		}
-		else if (dedicated)
-		{
-			// Preserve the pre-interp sleeping behavior for dedicated mode
-			I_Sleep();
-		}
 
 		// I_FinishUpdate is now here instead of D_Display,
 		// because it synchronizes it more closely with the frame counter.
diff --git a/src/r_fps.c b/src/r_fps.c
index 1bc92c6227..45f301551a 100644
--- a/src/r_fps.c
+++ b/src/r_fps.c
@@ -42,6 +42,13 @@ consvar_t cv_fpscap = CVAR_INIT ("fpscap", "Match refresh rate", CV_SAVE, fpscap
 
 UINT32 R_GetFramerateCap(void)
 {
+	if (rendermode == render_none)
+	{
+		// If we're not rendering (dedicated server),
+		// we shouldn't be using any interpolation.
+		return TICRATE;
+	}
+
 	if (cv_fpscap.value == 0)
 	{
 		// 0: Match refresh rate
-- 
GitLab