diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs index 20e2ac522..08b2a0585 100644 --- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs @@ -189,17 +189,12 @@ namespace Ryujinx.Ava.UI.Windows { Dispatcher.UIThread.Post(() => { - List ldnGameDataArray = e.LdnData.ToList(); ViewModel.LdnData.Clear(); foreach (ApplicationData application in ViewModel.Applications.Where(it => it.HasControlHolder)) { ref ApplicationControlProperty controlHolder = ref application.ControlHolder.Value; - - ViewModel.LdnData[application.IdString] = - LdnGameData.GetArrayForApp( - ldnGameDataArray, - ref controlHolder - ); + + ViewModel.LdnData[application.IdString] = e.LdnData.Where(ref controlHolder); UpdateApplicationWithLdnData(application); } diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs b/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs index 4b9b8fe6c..252c0ecdc 100644 --- a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs +++ b/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs @@ -18,7 +18,7 @@ namespace Ryujinx.Ava.Utilities.AppLibrary public IEnumerable Players { get; set; } public static Array GetArrayForApp( - IEnumerable receivedData, ref ApplicationControlProperty acp) + LdnGameData[] receivedData, ref ApplicationControlProperty acp) { LibHac.Common.FixedArrays.Array8 communicationId = acp.LocalCommunicationId; @@ -40,4 +40,10 @@ namespace Ryujinx.Ava.Utilities.AppLibrary public int GameCount => _ldnDatas.Length; } } + + public static class LdnGameDataHelper + { + public static LdnGameData.Array Where(this LdnGameData[] unfilteredDatas, ref ApplicationControlProperty acp) + => LdnGameData.GetArrayForApp(unfilteredDatas, ref acp); + } }