diff --git a/hmm.json b/hmm.json index 52aea2a2..06defb1c 100644 --- a/hmm.json +++ b/hmm.json @@ -22,7 +22,7 @@ "type": "git", "dir": "flxanimate", "ref": "master", - "url": "https://github.com/Dot-Stuff/flxanimate/" + "url": "https://github.com/YoshiCrafter29/flxanimate/" }, { "name": "format", diff --git a/source/ExternalCode.hx b/source/ExternalCode.hx new file mode 100644 index 00000000..70575c83 --- /dev/null +++ b/source/ExternalCode.hx @@ -0,0 +1,55 @@ +package; + +#if windows +@:headerCode("#include ") +#elseif linux +@:headerCode("#include ") +#elseif mac +@:headerCode("#include ") +#end +class ExternalCode { + #if windows + @:functionCode(" + // simple but effective code + unsigned long long allocatedRAM = 0; + GetPhysicallyInstalledSystemMemory(&allocatedRAM); + return (allocatedRAM / 1024); + ") + #elseif linux + @:functionCode(' + FILE *meminfo = fopen("/proc/meminfo", "r"); + + if(meminfo == NULL) + return -1; + + char line[256]; + while(fgets(line, sizeof(line), meminfo)) + { + int ram; + if(sscanf(line, "MemTotal: %d kB", &ram) == 1) + { + fclose(meminfo); + return (ram / 1024); + } + } + + fclose(meminfo); + return -1; + ') + #elseif mac + @:functionCode(' + int mib [] = { CTL_HW, HW_MEMSIZE }; + int64_t value = 0; + size_t length = sizeof(value); + + if(-1 == sysctl(mib, 2, &value, &length, NULL, 0)) + return -1; // An error occurred + + return value / 1024 / 1024; + ') + #end + public static function getTotalRam():Float + { + return 0; + } +} \ No newline at end of file diff --git a/source/funkin/system/framerate/SystemInfo.hx b/source/funkin/system/framerate/SystemInfo.hx index fe9ffb26..2e4a182b 100644 --- a/source/funkin/system/framerate/SystemInfo.hx +++ b/source/funkin/system/framerate/SystemInfo.hx @@ -1,5 +1,6 @@ package funkin.system.framerate; +import ExternalCode; import native.HiddenProcess; import funkin.utils.MemoryUtil; @@ -14,7 +15,7 @@ class SystemInfo extends FramerateCategory { public static var memType:String = "Unknown"; public static inline function init() { - osInfo = '${lime.system.System.platformLabel.replace(lime.system.System.platformVersion, "")} ${lime.system.System.platformVersion}'; + osInfo = '${lime.system.System.platformLabel.replace(lime.system.System.platformVersion, "").trim()} ${lime.system.System.platformVersion}'; #if windows var process = new HiddenProcess("wmic", ["cpu", "get", "name"]); @@ -39,8 +40,10 @@ class SystemInfo extends FramerateCategory { vRAM = CoolUtil.getSizeString(cast(flixel.FlxG.stage.context3D.gl.getParameter(openfl.display3D.Context3D.__glMemoryTotalAvailable), UInt) * 1000); } - #if cpp - totalMem = Std.string(MemoryUtil.getTotalMem() / 1024) + " GB"; + #if cpp + var total = ExternalCode.getTotalRam(); + trace("Total Ram: " + total); + totalMem = Std.string(total / 1024) + " GB"; #end memType = MemoryUtil.getMemType(); } diff --git a/source/funkin/utils/MemoryUtil.hx b/source/funkin/utils/MemoryUtil.hx index 66f5c603..6974ee72 100644 --- a/source/funkin/utils/MemoryUtil.hx +++ b/source/funkin/utils/MemoryUtil.hx @@ -12,53 +12,20 @@ import neko.vm.Gc; #end import openfl.system.System; +using StringTools; + #if cpp @:cppFileCode(" #if defined(HX_WINDOWS) -#include - -long long totalMem() { - unsigned long long allocatedRAM = 0; - GetPhysicallyInstalledSystemMemory(&allocatedRAM); - return (allocatedRAM / 1024); -} + #include #endif -#if define(HX_MAC) -#include -long long totalMem() { - int mib [] = { CTL_HW, HW_MEMSIZE }; - int64_t value = 0; - size_t length = sizeof(value); - - if(-1 == sysctl(mib, 2, &value, &length, NULL, 0)) - return -1; // An error occurred - - return value / 1024 / 1024; -} +#if defined(HX_MAC) + #include #endif + #if defined(HX_LINUX) -#include - -long long totalMem() { - FILE *meminfo = fopen('/proc/meminfo', 'r'); - - if(meminfo == NULL) return -1; - - char line[256]; - while(fgets(line, sizeof(line), meminfo)) - { - int ram; - if(sscanf(line, 'MemTotal: %d kB', &ram) == 1) - { - fclose(meminfo); - return (ram / 1024); - } - } - - fclose(meminfo); - return -1; -} + #include #endif ") #end @@ -112,7 +79,44 @@ class MemoryUtil { } #if cpp - @:functionCode("return totalMem();") + @:functionCode(" + #if defined(HX_WINDOWS) + unsigned long long allocatedRAM = 0; + GetPhysicallyInstalledSystemMemory(&allocatedRAM); + return (allocatedRAM / 1024); + #endif + + #if defined(HX_MAC) + int mib [] = { CTL_HW, HW_MEMSIZE }; + int64_t value = 0; + size_t length = sizeof(value); + + if(-1 == sysctl(mib, 2, &value, &length, NULL, 0)) + return -1; // An error occurred + + return value / 1024 / 1024; + #endif + + #if defined(HX_LINUX) + FILE *meminfo = fopen('/proc/meminfo', 'r'); + + if(meminfo == NULL) return -1; + + char line[256]; + while(fgets(line, sizeof(line), meminfo)) + { + int ram; + if(sscanf(line, 'MemTotal: %d kB', &ram) == 1) + { + fclose(meminfo); + return (ram / 1024); + } + } + + fclose(meminfo); + return -1; + #endif + ") public static function getTotalMem():Float { return 0; @@ -167,7 +171,9 @@ class MemoryUtil { if (memoryOutput != -1) return memoryMap[memoryOutput]; #elseif mac var process = new HiddenProcess("system_profiler", ["SPMemoryDataType"]); - if (process.exitCode() == 0) return process.stdout.readAll().toString().match(/Type: (.+)/)[1]; + var reg = ~/Type: (.+)/; + reg.match(process.stdout.readAll().toString()); + if (process.exitCode() == 0) return reg.matched(1); #elseif linux var process = HiddenProcess("sudo", ["dmidecode", "--type", "17"]); if (process.exitCode() != 0) return "Unknown";