-
Notifications
You must be signed in to change notification settings - Fork 25
Description
tldr - Enabling/Disabling Gallium nine doesn't work on Arch Linux. I've managed to fix it by replacing one string.
--- orig/src/wine-nine-standalone/ninewinecfg/main.c 2025-01-24 19:25:51.535460369 +0200
+++ fix/src/wine-nine-standalone/ninewinecfg/main.c 2025-01-24 18:59:49.152137930 +0200
@@ -257,7 +257,7 @@
return FALSE;
buf[ret] = 0;
- return !strcmp(buf + ret - strlen(fn_nine_dll), fn_nine_dll);
+ return !strcmp(buf + ret - strlen(fn_nine_dll), "9-nine.dll.so");
}
static BOOL nine_get_system_path(CHAR *pOut, DWORD SizeOut)Long story - ninewinecfg cannot enable or disable Gallium nine on Arch Linux with either cli or gui. Running wine ninewinecfg -e returns 1. Running wine ninewinecfg -d returns 0 but it's not disabled. With the gui the checkbox Enable Gallium Nine... cannot be checked (no matter how many times I click). There is no output in the terminal window indicating what's wrong. It's the same with the latest version from github (wine-nine 0.11-devel).
I've managed to fix the problem by replacing this line:
wine-nine-standalone/ninewinecfg/main.c
Line 260 in 909f059
| return !strcmp(buf + ret - strlen(fn_nine_dll), fn_nine_dll); |
with
return !strcmp(buf + ret - strlen(fn_nine_dll), "9-nine.dll.so");.
I've found the "correct" string by printing some variables to stdout:
buf="/usr/lib32/wine/i386-unix/d3d9-nine.dll.so"
buf+ ret=""
buf + ret - strlen(fn_nine_dll)="9-nine.dll.so"
fn_nine_dll="d3d9-nine.dll"
After recompiling the checkbox works. Both the gui and the cli (with -e/-d) can enable/disable successfully.
Tested on:
wine 10.0-1
wine 9.22-1
wine-staging 9.22-1
wine-nine 0.10-1
linux 6.12.10.arch1-1
gcc 14.2.1+r134+gab884fffe3fc-2