diff --git a/Ryujinx.HLE/HOS/Services/Vi/IApplicationDisplayService.cs b/Ryujinx.HLE/HOS/Services/Vi/IApplicationDisplayService.cs index b272e0788d..68dfd86eab 100644 --- a/Ryujinx.HLE/HOS/Services/Vi/IApplicationDisplayService.cs +++ b/Ryujinx.HLE/HOS/Services/Vi/IApplicationDisplayService.cs @@ -180,22 +180,29 @@ namespace Ryujinx.HLE.HOS.Services.Vi public long ConvertScalingMode(ServiceCtx context) { - SrcScalingMode scalingMode = (SrcScalingMode)context.RequestData.ReadInt32(); - DstScalingMode? destScalingMode = ConvetScalingModeImpl(scalingMode); + SrcScalingMode scalingMode = (SrcScalingMode)context.RequestData.ReadInt32(); - if (!destScalingMode.HasValue) + if (scalingMode > SrcScalingMode.PreserveAspectRatio) { + //Scaling mode out of the range of valid values. return MakeError(ErrorModule.Vi, 1); } - context.ResponseData.Write((ulong)destScalingMode); + if (scalingMode != SrcScalingMode.ScaleAndCrop && + scalingMode != SrcScalingMode.PreserveAspectRatio) + { + //Invalid scaling mode specified. + return MakeError(ErrorModule.Vi, 6); + } + + context.ResponseData.Write((ulong)ConvetScalingMode(scalingMode)); return 0; } - private DstScalingMode? ConvetScalingModeImpl(SrcScalingMode srcScalingMode) + private DstScalingMode ConvetScalingMode(SrcScalingMode source) { - switch (srcScalingMode) + switch (source) { case SrcScalingMode.None: return DstScalingMode.None; case SrcScalingMode.Freeze: return DstScalingMode.Freeze; @@ -204,7 +211,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi case SrcScalingMode.PreserveAspectRatio: return DstScalingMode.PreserveAspectRatio; } - return null; + throw new ArgumentException($"Invalid scaling mode \"{source}\" specified."); } public long GetDisplayVSyncEvent(ServiceCtx context) diff --git a/Ryujinx.HLE/HOS/Services/Vi/ScalingMode.cs b/Ryujinx.HLE/HOS/Services/Vi/ScalingMode.cs index 824a27b70a..42e51c30aa 100644 --- a/Ryujinx.HLE/HOS/Services/Vi/ScalingMode.cs +++ b/Ryujinx.HLE/HOS/Services/Vi/ScalingMode.cs @@ -1,24 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Ryujinx.HLE.HOS.Services.Vi +namespace Ryujinx.HLE.HOS.Services.Vi { enum SrcScalingMode { - Freeze = 0, - ScaleToWindow = 1, - ScaleAndCrop = 2, - None = 3, + Freeze = 0, + ScaleToWindow = 1, + ScaleAndCrop = 2, + None = 3, PreserveAspectRatio = 4 } enum DstScalingMode { - None = 0, - Freeze = 1, - ScaleToWindow = 2, - ScaleAndCrop = 3, + ScaleToWindow = 0, + ScaleAndCrop = 1, + None = 2, + Freeze = 3, PreserveAspectRatio = 4 } }