Avalonia - Couple fixes and improvements (#3451)

* fix updater check crash

* remove line

* reduce cheat window sizes

* enable tiered compilation and r2r

* remove warning on LaunchState

* remove warnings related to tasks

* addressed review

* undo csproj indentation

* fix tabs in axaml file

* remove double line

* remove R2R
This commit is contained in:
Emmanuel Hansen 2022-07-11 22:25:33 +00:00 committed by GitHub
parent 5b3a13592f
commit d7f5947a9f
14 changed files with 141 additions and 80 deletions

View file

@ -7,7 +7,6 @@
xmlns:model="clr-namespace:Ryujinx.Ava.Ui.Models"
xmlns:window="clr-namespace:Ryujinx.Ava.Ui.Windows"
mc:Ignorable="d"
SizeToContent="Height"
Width="500" MinHeight="500" Height="500"
WindowStartupLocation="CenterOwner"
MinWidth="500">
@ -45,6 +44,13 @@
VerticalAlignment="Stretch"
Name="CheatsView"
MinHeight="300">
<TreeView.Styles>
<Styles>
<Style Selector="TreeViewItem:empty /template/ ItemsPresenter">
<Setter Property="IsVisible" Value="False"/>
</Style>
</Styles>
</TreeView.Styles>
<TreeView.DataTemplates>
<TreeDataTemplate DataType="model:CheatsList" ItemsSource="{Binding}">
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
@ -56,9 +62,9 @@
</StackPanel>
</TreeDataTemplate>
<DataTemplate x:DataType="model:CheatModel">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<CheckBox IsChecked="{Binding IsEnabled}" MinWidth="20" />
<TextBlock Text="{Binding CleanName}" />
<StackPanel Orientation="Horizontal" Margin="0" HorizontalAlignment="Left">
<CheckBox IsChecked="{Binding IsEnabled}" Padding="0" Margin="5,0" MinWidth="20" />
<TextBlock Text="{Binding CleanName}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</TreeView.DataTemplates>

View file

@ -2,6 +2,7 @@ using Avalonia;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
@ -21,6 +22,7 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Path = System.IO.Path;
namespace Ryujinx.Ava.Ui.Windows
@ -125,15 +127,18 @@ namespace Ryujinx.Ava.Ui.Windows
}
catch (Exception ex)
{
ContentDialogHelper.CreateErrorDialog(this,
Dispatcher.UIThread.InvokeAsync(async () =>
{
await ContentDialogHelper.CreateErrorDialog(this,
string.Format(LocaleManager.Instance[
"DialogDlcLoadNcaErrorMessage"], ex.Message, containerPath));
});
}
return null;
}
private void AddDlc(string path)
private async Task AddDlc(string path)
{
if (!File.Exists(path) || Dlcs.FirstOrDefault(x => x.ContainerPath == path) != null)
{
@ -175,7 +180,7 @@ namespace Ryujinx.Ava.Ui.Windows
if (!containsDlc)
{
ContentDialogHelper.CreateErrorDialog(this, LocaleManager.Instance["DialogDlcNoDlcErrorMessage"]);
await ContentDialogHelper.CreateErrorDialog(this, LocaleManager.Instance["DialogDlcNoDlcErrorMessage"]);
}
}
}
@ -214,7 +219,7 @@ namespace Ryujinx.Ava.Ui.Windows
{
foreach (string file in files)
{
AddDlc(file);
await AddDlc(file);
}
}
}

View file

@ -120,8 +120,6 @@ namespace Ryujinx.Ava.Ui.Windows
InputManager = new InputManager(new AvaloniaKeyboardDriver(this), new SDL2GamepadDriver());
LoadGameList();
CheckLaunchState();
}
_rendererWaitEvent = new AutoResetEvent(false);
@ -451,7 +449,7 @@ namespace Ryujinx.Ava.Ui.Windows
RefreshFirmwareStatus();
}
protected async void CheckLaunchState()
protected void CheckLaunchState()
{
if (ShowKeyErrorOnLoad)
{
@ -470,7 +468,7 @@ namespace Ryujinx.Ava.Ui.Windows
if (ConfigurationState.Instance.CheckUpdatesOnStart.Value && Updater.CanUpdate(false, this))
{
await Updater.BeginParse(this, false).ContinueWith(task =>
Updater.BeginParse(this, false).ContinueWith(task =>
{
Logger.Error?.Print(LogClass.Application, $"Updater Error: {task.Exception}");
}, TaskContinuationOptions.OnlyOnFaulted);
@ -537,6 +535,13 @@ namespace Ryujinx.Ava.Ui.Windows
LoadHotKeys();
}
protected override void OnOpened(EventArgs e)
{
base.OnOpened(e);
CheckLaunchState();
}
public static void UpdateGraphicsConfig()
{
int resScale = ConfigurationState.Instance.Graphics.ResScale;

View file

@ -24,6 +24,7 @@ using System.Text;
using Path = System.IO.Path;
using SpanHelpers = LibHac.Common.SpanHelpers;
using LibHac.Tools.FsSystem;
using Avalonia.Threading;
namespace Ryujinx.Ava.Ui.Windows
{
@ -151,14 +152,20 @@ namespace Ryujinx.Ava.Ui.Windows
}
else
{
ContentDialogHelper.CreateErrorDialog(this,
LocaleManager.Instance["DialogUpdateAddUpdateErrorMessage"]);
Dispatcher.UIThread.Post(async () =>
{
await ContentDialogHelper.CreateErrorDialog(this,
LocaleManager.Instance["DialogUpdateAddUpdateErrorMessage"]);
});
}
}
catch (Exception ex)
{
ContentDialogHelper.CreateErrorDialog(this,
string.Format(LocaleManager.Instance["DialogDlcLoadNcaErrorMessage"], ex.Message, path));
Dispatcher.UIThread.Post(async () =>
{
await ContentDialogHelper.CreateErrorDialog(this,
string.Format(LocaleManager.Instance["DialogDlcLoadNcaErrorMessage"], ex.Message, path));
});
}
}
}