Reduce UI thread blocking

This commit is contained in:
Isaac Marovitz 2022-12-29 19:20:47 +01:00
parent 9195477e0b
commit fdfbafa137
No known key found for this signature in database
GPG key ID: 97250B2B09A132E1

View file

@ -13,6 +13,7 @@ using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Services.Account.Acc; using Ryujinx.HLE.HOS.Services.Account.Acc;
using System; using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks; using System.Threading.Tasks;
using UserId = LibHac.Fs.UserId; using UserId = LibHac.Fs.UserId;
@ -60,10 +61,9 @@ namespace Ryujinx.Ava.UI.Views.User
} }
public void LoadSaves() public void LoadSaves()
{
Dispatcher.UIThread.Post((() =>
{ {
ViewModel.Saves.Clear(); ViewModel.Saves.Clear();
var saves = new ObservableCollection<SaveModel>();
var saveDataFilter = SaveDataFilter.Make(programId: default, saveType: SaveDataType.Account, var saveDataFilter = SaveDataFilter.Make(programId: default, saveType: SaveDataType.Account,
new UserId((ulong)_accountManager.LastOpenedUser.UserId.High, (ulong)_accountManager.LastOpenedUser.UserId.Low), saveDataId: default, index: default); new UserId((ulong)_accountManager.LastOpenedUser.UserId.High, (ulong)_accountManager.LastOpenedUser.UserId.Low), saveDataId: default, index: default);
@ -88,14 +88,17 @@ namespace Ryujinx.Ava.UI.Views.User
if (save.ProgramId.Value != 0) if (save.ProgramId.Value != 0)
{ {
var saveModel = new SaveModel(save, _horizonClient, _virtualFileSystem); var saveModel = new SaveModel(save, _horizonClient, _virtualFileSystem);
ViewModel.Saves.Add(saveModel); saves.Add(saveModel);
saveModel.DeleteAction = () => { ViewModel.Saves.Remove(saveModel); }; saveModel.DeleteAction = () => { ViewModel.Saves.Remove(saveModel); };
} }
}
}
Dispatcher.UIThread.Post(() =>
{
ViewModel.Saves = saves;
ViewModel.Sort(); ViewModel.Sort();
} });
}
}));
} }
private void GoBack(object sender, RoutedEventArgs e) private void GoBack(object sender, RoutedEventArgs e)