diff options
author | Andrew Udvare <audvare@gmail.com> | 2020-09-30 02:39:18 +0200 |
---|---|---|
committer | Andrew Udvare <audvare@gmail.com> | 2020-09-30 21:40:28 +0200 |
commit | 01ea7801fdd51852a4312350cd6c8bf91efe8666 (patch) | |
tree | e30f6eca1dd4d0f512ceb4fa7d36e2b8dd2fd60d /src/skel/glfw/glfw.cpp | |
parent | Fix more (diff) | |
download | re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar.gz re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar.bz2 re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar.lz re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar.xz re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.tar.zst re3-01ea7801fdd51852a4312350cd6c8bf91efe8666.zip |
Diffstat (limited to '')
-rw-r--r-- | src/skel/glfw/glfw.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index b9dbf5ac..48701921 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -81,7 +81,12 @@ DWORD _dwOperatingSystemVersion; #include "resource.h" #else long _dwOperatingSystemVersion; +#ifndef __APPLE__ #include <sys/sysinfo.h> +#else +#include <mach/mach_host.h> +#include <sys/sysctl.h> +#endif #include <stddef.h> #include <locale.h> #include <signal.h> @@ -445,15 +450,27 @@ psInitialize(void) #endif #endif +#ifndef __APPLE__ struct sysinfo systemInfo; sysinfo(&systemInfo); - _dwMemAvailPhys = systemInfo.freeram; - _dwOperatingSystemVersion = OS_WINXP; // To fool other classes - debug("Physical memory size %u\n", systemInfo.totalram); debug("Available physical memory %u\n", systemInfo.freeram); - +#else + uint64_t size = 0; + uint64_t page_size = 0; + size_t uint64_len = sizeof(uint64_t); + size_t ull_len = sizeof(unsigned long long); + sysctl((int[]){CTL_HW, HW_PAGESIZE}, 2, &page_size, &ull_len, NULL, 0); + sysctl((int[]){CTL_HW, HW_MEMSIZE}, 2, &size, &uint64_len, NULL, 0); + vm_statistics_data_t vm_stat; + mach_msg_type_number_t count = HOST_VM_INFO_COUNT; + host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vm_stat, &count); + _dwMemAvailPhys = (uint64_t)(vm_stat.free_count * page_size); + debug("Physical memory size %llu\n", _dwMemAvailPhys); + debug("Available physical memory %llu\n", size); +#endif + _dwOperatingSystemVersion = OS_WINXP; // To fool other classes #endif TheText.Unload(); |