From 925463e6bc24272490ccf25b83e896eeeeff9ec0 Mon Sep 17 00:00:00 2001 From: Er2 Date: Wed, 5 Feb 2025 14:33:36 +0000 Subject: [PATCH] Add FreeBSD support --- mod.json | 7 ++++--- resources/freebsd-input.exe.so | Bin 0 -> 111664 bytes src/linux/Makefile | 17 ++++++++++++++--- src/main.cpp | 26 +++++++++++++++++--------- 4 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 resources/freebsd-input.exe.so diff --git a/mod.json b/mod.json index a4586dc..fb32a09 100644 --- a/mod.json +++ b/mod.json @@ -1,9 +1,9 @@ { - "geode": "4.0.0", + "geode": "4.2.0", "gd": { "win": "2.2074" }, - "version": "v1.3.0", + "version": "v1.3.1", "id": "syzzi.click_between_frames", "name": "Click Between Frames", "developer": "syzzi", @@ -108,7 +108,8 @@ }, "resources": { "files": [ - "resources/linux-input.exe.so" + "resources/linux-input.exe.so", + "resources/freebsd-input.exe.so" ] } } \ No newline at end of file diff --git a/resources/freebsd-input.exe.so b/resources/freebsd-input.exe.so new file mode 100644 index 0000000000000000000000000000000000000000..1c3a893f8139152c44673205c915c4109ba9b467 GIT binary patch literal 111664 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"you-must-be-on-linux-to-change-this", true); - if (sys == "Linux" && Mod::get()->getSettingValue("wine-workaround")) { // background raw keyboard input doesn't work in Wine - linuxNative = true; + const bool isLinux = sys == "Linux" || sys == "FreeBSD"; // FreeBSD isn't actually linux but it can run linux executables + + if (isLinux) Mod::get()->setSavedValue("you-must-be-on-linux-to-change-this", true); + if (isLinux && Mod::get()->getSettingValue("wine-workaround")) { // background raw keyboard input doesn't work in Wine + linuxNative = true; log::info("Linux native"); - hSharedMem = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(LinuxInputEvent[BUFFER_SIZE]), "LinuxSharedMemory"); + hSharedMem = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(LinuxInputEvent[BUFFER_SIZE]), "LinuxSharedMemory"); if (hSharedMem == NULL) { log::error("Failed to create file mapping: {}", GetLastError()); return; @@ -578,10 +580,10 @@ HANDLE gdMutex; pBuf = MapViewOfFile(hSharedMem, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(LinuxInputEvent[BUFFER_SIZE])); if (pBuf == NULL) { - log::error("Failed to map view of file: {}", GetLastError()); + log::error("Failed to map view of file: {}", GetLastError()); CloseHandle(hSharedMem); - return; - } + return; + } hMutex = CreateMutex(NULL, FALSE, "CBFLinuxMutex"); if (hMutex == NULL) { @@ -609,7 +611,13 @@ HANDLE gdMutex; si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); - std::string path = CCFileUtils::get()->fullPathForFilename("linux-input.exe.so"_spr, true); + const char* inputlib = "linux-input.exe.so"_spr; + // Workaround because linux version fails to load (newer glibc than in provided rocky linux 9 + something else, lazy to discover) + // Anyway faster version + if (sys == "FreeBSD") + inputlib = "freebsd-input.exe.so"_spr; + + std::string path = CCFileUtils::get()->fullPathForFilename(inputlib, true); if (!CreateProcess(path.c_str(), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) { log::error("Failed to launch Linux input program: {}", GetLastError()); @@ -624,4 +632,4 @@ HANDLE gdMutex; if (!linuxNative) { std::thread(inputThread).detach(); } -} \ No newline at end of file +}