Przeglądaj źródła

UI: Compat: Unload compatibility entries when the window closes.

Evan Husted 1 rok temu
rodzic
commit
6482e566ab

+ 22 - 4
src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs

@@ -28,7 +28,9 @@ namespace Ryujinx.Ava.Utilities.Compat
     
     public class CompatibilityCsv
     {
-        static CompatibilityCsv()
+        static CompatibilityCsv() => Load();
+
+        public static void Load()
         {
             using Stream csvStream = Assembly.GetExecutingAssembly()
                 .GetManifestResourceStream("RyujinxGameCompatibilityList")!;
@@ -37,15 +39,31 @@ namespace Ryujinx.Ava.Utilities.Compat
             using SepReader reader = Sep.Reader().From(csvStream);
             ColumnIndices columnIndices = new(reader.Header.IndexOf);
 
-            Entries = reader
+            _entries = reader
                 .Enumerate(row => new CompatibilityEntry(ref columnIndices, row))
                 .OrderBy(it => it.GameName)
                 .ToArray();
             
-            Logger.Debug?.Print(LogClass.UI, "Compatibility CSV loaded.", "LoadCompatCsv");
+            Logger.Debug?.Print(LogClass.UI, "Compatibility CSV loaded.", "LoadCompatibility");
+        }
+
+        public static void Unload()
+        {
+            _entries = null;
         }
 
-        public static CompatibilityEntry[] Entries { get; private set; }
+        private static CompatibilityEntry[] _entries;
+        
+        public static CompatibilityEntry[] Entries 
+        {
+            get
+            {
+                if (_entries == null)
+                    Load();
+                
+                return _entries;
+            }
+        }
     }
 
     public class CompatibilityEntry

+ 2 - 3
src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs

@@ -1,11 +1,8 @@
 using Avalonia.Controls;
 using Avalonia.Styling;
 using FluentAvalonia.UI.Controls;
-using nietras.SeparatedValues;
 using Ryujinx.Ava.Common.Locale;
 using Ryujinx.Ava.UI.Helpers;
-using System.IO;
-using System.Reflection;
 using System.Threading.Tasks;
 
 namespace Ryujinx.Ava.Utilities.Compat
@@ -35,6 +32,8 @@ namespace Ryujinx.Ava.Utilities.Compat
             contentDialog.Styles.Add(closeButtonParent);
 
             await ContentDialogHelper.ShowAsync(contentDialog);
+            
+            CompatibilityCsv.Unload();
         }
         
         public CompatibilityList()