Fix Fedora support (#3815)

For some reasons, my fresh installation of Fedora 36 (KDE) doesn't have a
symlink for libX11.so.

This commit fixes this by trying to import the library with its major
version or fallback to the normal way.
This commit is contained in:
Mary-nyan 2022-11-17 00:18:29 +01:00 committed by GitHub
parent 2c9ab5e45f
commit 5d73a9f5fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 3 deletions

View file

@ -29,7 +29,11 @@ namespace Ryujinx
public static string ConfigurationPath { get; set; }
[DllImport("libX11")]
public static string CommandLineProfile { get; set; }
private const string X11LibraryName = "libX11";
[DllImport(X11LibraryName)]
private extern static int XInitThreads();
[DllImport("user32.dll", SetLastError = true)]
@ -37,6 +41,30 @@ namespace Ryujinx
private const uint MB_ICONWARNING = 0x30;
static Program()
{
if (OperatingSystem.IsLinux())
{
NativeLibrary.SetDllImportResolver(typeof(Program).Assembly, (name, assembly, path) =>
{
if (name != X11LibraryName)
{
return IntPtr.Zero;
}
if (!NativeLibrary.TryLoad("libX11.so.6", assembly, path, out IntPtr result))
{
if (!NativeLibrary.TryLoad("libX11.so", assembly, path, out result))
{
return IntPtr.Zero;
}
}
return result;
});
}
}
static void Main(string[] args)
{
Version = ReleaseInformations.GetVersion();