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

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))
             if (value is byte[] buffer && targetType == typeof(IImage))
             {
             {
                 MemoryStream mem = new(buffer);
                 MemoryStream mem = new(buffer);
+
                 return new Bitmap(mem);
                 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.Ava.UI.Windows;
 using Ryujinx.Common;
 using Ryujinx.Common;
 using Ryujinx.Common.Utilities;
 using Ryujinx.Common.Utilities;
-using Ryujinx.HLE.HOS;
 using Ryujinx.Modules;
 using Ryujinx.Modules;
-using Ryujinx.Ui.App.Common;
 using Ryujinx.Ui.Common;
 using Ryujinx.Ui.Common;
 using Ryujinx.Ui.Common.Configuration;
 using Ryujinx.Ui.Common.Configuration;
 using Ryujinx.Ui.Common.Helper;
 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();
                                     ulong nacpSize = reader.ReadUInt64();
 
 
                                     // Reads and stores game icon as byte array
                                     // 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 the NACP data
                                     Read(assetOffset + (int)nacpOffset, (int)nacpSize).AsSpan().CopyTo(controlHolder.ByteSpan);
                                     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);
                                 long iconSize = BitConverter.ToInt64(iconSectionInfo, 8);
 
 
                                 // Reads and stores game icon as byte array
                                 // 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
                             else
                             {
                             {