From 8d24381e7ead6f438f77b2c187dadd110ce8c85b Mon Sep 17 00:00:00 2001
From: David Carlier <[EMAIL REDACTED]>
Date: Sat, 25 Feb 2023 08:31:07 +0000
Subject: [PATCH] SDL_GetSystemRAM completion for Haiku system.
using native system_info's api.
---
src/cpuinfo/SDL_cpuinfo.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c
index 942c3265fd03..ccb02e64c0ba 100644
--- a/src/cpuinfo/SDL_cpuinfo.c
+++ b/src/cpuinfo/SDL_cpuinfo.c
@@ -83,6 +83,10 @@
#include <kernel.h>
#endif
+#ifdef __HAIKU__
+#include <kernel/OS.h>
+#endif
+
#define CPU_HAS_RDTSC (1 << 0)
#define CPU_HAS_ALTIVEC (1 << 1)
#define CPU_HAS_MMX (1 << 2)
@@ -1080,6 +1084,16 @@ int SDL_GetSystemRAM(void)
SDL_SystemRAM = GetMemorySize();
}
#endif
+#ifdef __HAIKU__
+ if (SDL_SystemRAM <= 0) {
+ system_info info;
+ if (get_system_info(&info) == B_OK) {
+ /* To have an accurate amount, we also take in account the inaccessible pages (aka ignored)
+ which is a bit handier compared to the legacy system's api (i.e. used_pages).*/
+ SDL_SystemRAM = (int)round((info.max_pages + info.ignored_pages > 0 ? info.ignored_pages : 0) * B_PAGE_SIZE / 1048576.0);
+ }
+ }
+#endif
#endif
}
return SDL_SystemRAM;