|
|
@@ -180,22 +180,31 @@ 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)
|
|
|
+ DstScalingMode? convertedScalingMode = ConvertScalingMode(scalingMode);
|
|
|
+
|
|
|
+ if (!convertedScalingMode.HasValue)
|
|
|
{
|
|
|
+ //Scaling mode out of the range of valid values.
|
|
|
return MakeError(ErrorModule.Vi, 1);
|
|
|
}
|
|
|
|
|
|
- context.ResponseData.Write((ulong)destScalingMode);
|
|
|
+ if (scalingMode != SrcScalingMode.ScaleToWindow &&
|
|
|
+ scalingMode != SrcScalingMode.PreserveAspectRatio)
|
|
|
+ {
|
|
|
+ //Invalid scaling mode specified.
|
|
|
+ return MakeError(ErrorModule.Vi, 6);
|
|
|
+ }
|
|
|
+
|
|
|
+ context.ResponseData.Write((ulong)convertedScalingMode);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- private DstScalingMode? ConvetScalingModeImpl(SrcScalingMode srcScalingMode)
|
|
|
+ private DstScalingMode? ConvertScalingMode(SrcScalingMode source)
|
|
|
{
|
|
|
- switch (srcScalingMode)
|
|
|
+ switch (source)
|
|
|
{
|
|
|
case SrcScalingMode.None: return DstScalingMode.None;
|
|
|
case SrcScalingMode.Freeze: return DstScalingMode.Freeze;
|