diff --git a/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabWine.cs b/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabWine.cs index e3402950..c1c56ccb 100644 --- a/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabWine.cs +++ b/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabWine.cs @@ -29,7 +29,7 @@ public SettingsTabWine() CheckVisibility = () => RuntimeInformation.IsOSPlatform(OSPlatform.Linux), CheckValidity = b => { - if (b == true && !CoreEnvironmentSettings.GameModeInstalled) + if (b == true && !CoreEnvironmentSettings.IsGameModeInstalled()) return "GameMode was not detected on your system."; return null; } diff --git a/src/XIVLauncher.Core/CoreEnvironmentSettings.cs b/src/XIVLauncher.Core/CoreEnvironmentSettings.cs index 278fbde8..6d512393 100644 --- a/src/XIVLauncher.Core/CoreEnvironmentSettings.cs +++ b/src/XIVLauncher.Core/CoreEnvironmentSettings.cs @@ -39,17 +39,20 @@ public static string GetCleanEnvironmentVariable(string envvar, string badstring return string.Join(separator, Array.FindAll(dirty.Split(separator, StringSplitOptions.RemoveEmptyEntries), s => !s.Contains(badstring))); } - static public bool GameModeInstalled { get; } + static private bool? gameModeInstalled = null; - static CoreEnvironmentSettings() - { + static public bool IsGameModeInstalled() + { + if (gameModeInstalled is not null) + return gameModeInstalled ?? false; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { var handle = IntPtr.Zero; - GameModeInstalled = NativeLibrary.TryLoad("libgamemodeauto.so.0", out handle); + gameModeInstalled = NativeLibrary.TryLoad("libgamemodeauto.so.0", out handle); NativeLibrary.Free(handle); } else - GameModeInstalled = false; + gameModeInstalled = false; + return gameModeInstalled ?? false; } } \ No newline at end of file