commit 1b25d36

uint  ·  2026-08-04 14:04:02 +0000 UTC
parent 491c442
Add maus_sleep
2 files changed,  +17, -12
+3, -1
 1@@ -171,6 +171,9 @@ void maus_present(Maus* mw);
 2    else 0 */
 3 int8_t maus_resize(Maus* mw, uint32_t width, uint32_t height);
 4 
 5+/* sleep for `ms` milliseconds */
 6+void maus_sleep(uint32_t ms);
 7+
 8 /* cap framerate to targetted fps */
 9 void maus_target_fps(Maus* mw, uint32_t fps);
10 
11@@ -178,4 +181,3 @@ void maus_target_fps(Maus* mw, uint32_t fps);
12 void maus_cur_set_mode(Maus* mw, MausCursorState state);
13 
14 #endif /* MAUSWIN_H */
15-
+14, -11
 1@@ -64,6 +64,19 @@ void maus_log(FILE* fd, const char* fmt, ...)
 2 	va_end(ap);
 3 }
 4 
 5+void maus_sleep(uint32_t ms)
 6+{
 7+#if !defined(_WIN32)
 8+	struct timespec ts;
 9+
10+	ts.tv_sec = ms / 1000;
11+	ts.tv_nsec = (ms % 1000) * 1000000;
12+	nanosleep(&ts, NULL);
13+#else
14+	Sleep((DWORD)ms);
15+#endif
16+}
17+
18 void maus_target_fps(Maus* mw, uint32_t fps)
19 {
20 	uint64_t ns_frame;
21@@ -71,10 +84,6 @@ void maus_target_fps(Maus* mw, uint32_t fps)
22 	uint64_t elapsed;
23 	uint64_t sleep;
24 
25-	#if !defined(_WIN32)
26-	struct timespec ts;
27-	#endif
28-
29 	if (fps == 0)
30 		return;
31 
32@@ -85,13 +94,7 @@ void maus_target_fps(Maus* mw, uint32_t fps)
33 	/* if early finish, sleep for the remaining time balance */
34 	if (elapsed < ns_frame) {
35 		sleep = ns_frame - elapsed;
36-	#if !defined(_WIN32)
37-		ts.tv_sec = sleep / 1000000000;
38-		ts.tv_nsec = sleep % 1000000000;
39-		nanosleep(&ts, NULL);
40-	#else
41-		Sleep((DWORD)((sleep + 999999) / 1000000));
42-	#endif
43+		maus_sleep((uint32_t)((sleep + 999999) / 1000000));
44 	}
45 
46 	mw->frame_time_last = maus_get_time_ns();