aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
diff options
context:
space:
mode:
authorTSRBerry <20988865+TSRBerry@users.noreply.github.com>2024-08-03 23:31:34 +0200
committerGitHub <noreply@github.com>2024-08-03 22:31:34 +0100
commit263eb97f79f02db12c2499ceec7e957b91bc008b (patch)
tree5f0676b4d82e5c3851f923f4ba4f39066fb6b3b9 /src/Ryujinx/UI/Windows/MainWindow.axaml.cs
parent30049022574f0aecaa94c0f24c64f5c9f3fb7ad9 (diff)
Avoid race conditions while launching games directly from the command line (#7116)1.1.1368
* optimization: Load application metadata only for applications with IDs * Load applications when necessary This prevents loading applications when launching an application directly from the command line (or a shortcut). Instead, applications will be loaded after the emulation was stopped by the user. * Show the title in the configured language when launching an application * Rename DesiredTitleLanguage to DesiredLanguage
Diffstat (limited to 'src/Ryujinx/UI/Windows/MainWindow.axaml.cs')
-rw-r--r--src/Ryujinx/UI/Windows/MainWindow.axaml.cs22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
index dc5336ab..348412e7 100644
--- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
@@ -37,6 +37,7 @@ namespace Ryujinx.Ava.UI.Windows
internal static MainWindowViewModel MainWindowViewModel { get; private set; }
private bool _isLoading;
+ private bool _applicationsLoadedOnce;
private UserChannelPersistence _userChannelPersistence;
private static bool _deferLoad;
@@ -224,7 +225,10 @@ namespace Ryujinx.Ava.UI.Windows
? IntegrityCheckLevel.ErrorOnInvalid
: IntegrityCheckLevel.None;
- ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, checkLevel);
+ ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, checkLevel)
+ {
+ DesiredLanguage = ConfigurationState.Instance.System.Language,
+ };
// Save data created before we supported extra data in directory save data will not work properly if
// given empty extra data. Luckily some of that extra data can be created using the data from the
@@ -472,7 +476,11 @@ namespace Ryujinx.Ava.UI.Windows
ViewModel.RefreshFirmwareStatus();
- LoadApplications();
+ // Load applications if no application was requested by the command line
+ if (!_deferLoad)
+ {
+ LoadApplications();
+ }
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
CheckLaunchState();
@@ -485,6 +493,12 @@ namespace Ryujinx.Ava.UI.Windows
if (MainContent.Content != content)
{
+ // Load applications while switching to the GameLibrary if we haven't done that yet
+ if (!_applicationsLoadedOnce && content == GameLibrary)
+ {
+ LoadApplications();
+ }
+
MainContent.Content = content;
}
}
@@ -581,6 +595,7 @@ namespace Ryujinx.Ava.UI.Windows
public void LoadApplications()
{
+ _applicationsLoadedOnce = true;
ViewModel.Applications.Clear();
StatusBarView.LoadProgressBar.IsVisible = true;
@@ -622,7 +637,8 @@ namespace Ryujinx.Ava.UI.Windows
Thread applicationLibraryThread = new(() =>
{
- ApplicationLibrary.LoadApplications(ConfigurationState.Instance.UI.GameDirs, ConfigurationState.Instance.System.Language);
+ ApplicationLibrary.DesiredLanguage = ConfigurationState.Instance.System.Language;
+ ApplicationLibrary.LoadApplications(ConfigurationState.Instance.UI.GameDirs);
_isLoading = false;
})