Просмотр исходного кода

UI: Fix empty homebrew icon (#5189)

* UI: Fix empty homebrew icon

We currently don't check the icon size when we read it from the homebrew data. That could cause issues at UI side since the buffer isn't null but empty. Extra check have been added UI side too.
(I cleaned up some files during my research too)

Fixes #5188

* Remove additional check

* Remove unused using
Ac_K 2 лет назад
Родитель
Сommit
b8f48bcf64

+ 1 - 0
src/Ryujinx.Ava/UI/Helpers/BitmapArrayValueConverter.cs

@@ -21,6 +21,7 @@ namespace Ryujinx.Ava.UI.Helpers
             if (value is byte[] buffer && targetType == typeof(IImage))
             {
                 MemoryStream mem = new(buffer);
+
                 return new Bitmap(mem);
             }
 

+ 0 - 2
src/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs

@@ -9,9 +9,7 @@ using Ryujinx.Ava.UI.ViewModels;
 using Ryujinx.Ava.UI.Windows;
 using Ryujinx.Common;
 using Ryujinx.Common.Utilities;
-using Ryujinx.HLE.HOS;
 using Ryujinx.Modules;
-using Ryujinx.Ui.App.Common;
 using Ryujinx.Ui.Common;
 using Ryujinx.Ui.Common.Configuration;
 using Ryujinx.Ui.Common.Helper;

+ 16 - 2
src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs

@@ -343,7 +343,14 @@ namespace Ryujinx.Ui.App.Common
                                     ulong nacpSize = reader.ReadUInt64();
 
                                     // Reads and stores game icon as byte array
-                                    applicationIcon = Read(assetOffset + iconOffset, (int)iconSize);
+                                    if (iconSize > 0)
+                                    {
+                                        applicationIcon = Read(assetOffset + iconOffset, (int)iconSize);
+                                    }
+                                    else
+                                    {
+                                        applicationIcon = _nroIcon;
+                                    }
 
                                     // Read the NACP data
                                     Read(assetOffset + (int)nacpOffset, (int)nacpSize).AsSpan().CopyTo(controlHolder.ByteSpan);
@@ -666,7 +673,14 @@ namespace Ryujinx.Ui.App.Common
                                 long iconSize = BitConverter.ToInt64(iconSectionInfo, 8);
 
                                 // Reads and stores game icon as byte array
-                                applicationIcon = Read(assetOffset + iconOffset, (int)iconSize);
+                                if (iconSize > 0)
+                                {
+                                    applicationIcon = Read(assetOffset + iconOffset, (int)iconSize);
+                                }
+                                else
+                                {
+                                    applicationIcon = _nroIcon;
+                                }
                             }
                             else
                             {