]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Fix scr_loadingscreen_maxfps, related polishing
authorbones_was_here <bones_was_here@xonotic.au>
Sat, 14 Sep 2024 07:58:03 +0000 (17:58 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Sat, 14 Sep 2024 08:25:41 +0000 (18:25 +1000)
Since that cvar was implemented, unix time has grown too large to be
represented precisely by a float, causing FPS to be much lower than
configured. Should be using host.realtime (relative) here anyway.

Simplifies Curl_Select() and improves some debug messages.

Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
cl_screen.c
libcurl.c
libcurl.h
sys_shared.c

index 7c2ab0dc02a1cc4360038acc9c6b2b584a37f7f9..fcec138368ea9de6dbcbae4e3ceed98730e24c10 100644 (file)
@@ -2249,11 +2249,10 @@ void CL_UpdateScreen(void)
                        SCR_EndLoadingPlaque();
                else if (scr_loadingscreen_maxfps.value > 0)
                {
-                       static float lastupdate;
-                       float now = Sys_DirtyTime();
-                       if (now - lastupdate < min(1.0f / scr_loadingscreen_maxfps.value, 0.1))
+                       static double lastupdate;
+                       if (host.realtime - lastupdate < min(1.0f / scr_loadingscreen_maxfps.value, 0.1))
                                return;
-                       lastupdate = now;
+                       lastupdate = host.realtime;
                }
        }
 
index d4b2defce063377b6827b735a03bb0dd11bb988b..d843572055b897b026c9e17d0eceb3620a5fa2fd 100644 (file)
--- a/libcurl.c
+++ b/libcurl.c
@@ -1260,19 +1260,18 @@ Returns 0 immediately if there's no transfers to wait for,
 or > 0 if a transfer is ready or the timeout was reached.
 ====================
 */
-int Curl_Select(int timeout_ms)
+bool Curl_Select(int timeout_ms)
 {
        CURLMcode err;
-       int numfds;
 
        if (List_Is_Empty(&downloads))
-               return 0;
+               return false;
 
-       err = qcurl_multi_wait(curlm, NULL, 0, timeout_ms, &numfds);
+       err = qcurl_multi_wait(curlm, NULL, 0, timeout_ms, NULL);
        if (err == CURLM_OK)
-               return numfds;
-       Con_Printf("curl_multi_wait() failed, code %d\n", err);
-       return 0;
+               return true;
+       Con_Printf(CON_ERROR "curl_multi_wait() failed with code %d\n", err);
+       return false;
 }
 
 /*
index 908bc4828f6c9b49c65dc0f94cece728cc986b14..a494c93703caa2289a4ed5446cac3b03ed3a6956 100644 (file)
--- a/libcurl.h
+++ b/libcurl.h
@@ -14,7 +14,7 @@ typedef void (*curl_callback_t) (int status, size_t length_received, unsigned ch
 // code is one of the CURLCBSTATUS constants, or the HTTP error code (when > 0).
 
 void Curl_Frame(void);
-int Curl_Select(int timeout_ms);
+bool Curl_Select(int timeout_ms);
 qbool Curl_Running(void);
 qbool Curl_Begin_ToFile(const char *URL, double maxspeed, const char *name, int loadtype, qbool forthismap);
 
index 1777353a8ccdb48ff32124a924979008784b8e9d..b9a353deddd427a5d90596c18955bd07e0819887 100644 (file)
@@ -520,7 +520,7 @@ double Sys_Sleep(double time)
        }
 
        if(sys_debugsleep.integer)
-               Con_Printf("sys_debugsleep: requesting %u ", usec);
+               Con_Printf("sys_debugsleep: requested %u, ", usec);
        dt = Sys_DirtyTime();
 
        // less important on newer libcurl so no need to disturb dedicated servers
@@ -598,7 +598,7 @@ double Sys_Sleep(double time)
 
        dt = Sys_DirtyTime() - dt;
        if(sys_debugsleep.integer)
-               Con_Printf(" got %u oversleep %d\n", (unsigned int)(dt * 1000000), (unsigned int)(dt * 1000000) - usec);
+               Con_Printf("got %u, oversleep %d\n", (uint32_t)(dt * 1000000), (uint32_t)(dt * 1000000) - usec);
        return (dt < 0 || dt >= 1800) ? 0 : dt;
 }