From 8d24381e7ead6f438f77b2c187dadd110ce8c85b Mon Sep 17 00:00:00 2001 From: David Carlier 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 942c3265fd..ccb02e64c0 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -83,6 +83,10 @@ #include #endif +#ifdef __HAIKU__ +#include +#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;