Skip to content

Incompatible with Wine 10.0-1/gcc 14/Arch linux + workaround #175

@Anakiev2

Description

@Anakiev2

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:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions