summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/vi/vi.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 266909ba4..b0ae074c9 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -1003,7 +1003,7 @@ private:
1003 const u64 unknown = rp.Pop<u64>(); 1003 const u64 unknown = rp.Pop<u64>();
1004 1004
1005 LOG_DEBUG(Service_VI, "called. scaling_mode=0x{:08X}, unknown=0x{:016X}", 1005 LOG_DEBUG(Service_VI, "called. scaling_mode=0x{:08X}, unknown=0x{:016X}",
1006 static_cast<u32>(scaling_mode), unknown); 1006 static_cast<u32>(scaling_mode), unknown);
1007 1007
1008 IPC::ResponseBuilder rb{ctx, 2}; 1008 IPC::ResponseBuilder rb{ctx, 2};
1009 1009
@@ -1102,31 +1102,35 @@ private:
1102 1102
1103 void ConvertScalingMode(Kernel::HLERequestContext& ctx) { 1103 void ConvertScalingMode(Kernel::HLERequestContext& ctx) {
1104 IPC::RequestParser rp{ctx}; 1104 IPC::RequestParser rp{ctx};
1105 auto mode = rp.PopEnum<NintendoScaleMode>(); 1105 const auto mode = rp.PopEnum<NintendoScaleMode>();
1106 LOG_DEBUG(Service_VI, "called mode={}", static_cast<u32>(mode)); 1106 LOG_DEBUG(Service_VI, "called mode={}", static_cast<u32>(mode));
1107 1107
1108 IPC::ResponseBuilder rb{ctx, 4}; 1108 const auto converted_mode = ConvertScalingModeImpl(mode);
1109 rb.Push(RESULT_SUCCESS); 1109
1110 if (converted_mode.Succeeded()) {
1111 IPC::ResponseBuilder rb{ctx, 4};
1112 rb.Push(RESULT_SUCCESS);
1113 rb.PushEnum(*converted_mode);
1114 } else {
1115 IPC::ResponseBuilder rb{ctx, 2};
1116 rb.Push(converted_mode.Code());
1117 }
1118 }
1119
1120 static ResultVal<ConvertedScaleMode> ConvertScalingModeImpl(NintendoScaleMode mode) {
1110 switch (mode) { 1121 switch (mode) {
1111 case NintendoScaleMode::None: 1122 case NintendoScaleMode::None:
1112 rb.PushEnum(ConvertedScaleMode::None); 1123 return MakeResult(ConvertedScaleMode::None);
1113 break;
1114 case NintendoScaleMode::Freeze: 1124 case NintendoScaleMode::Freeze:
1115 rb.PushEnum(ConvertedScaleMode::Freeze); 1125 return MakeResult(ConvertedScaleMode::Freeze);
1116 break;
1117 case NintendoScaleMode::ScaleToWindow: 1126 case NintendoScaleMode::ScaleToWindow:
1118 rb.PushEnum(ConvertedScaleMode::ScaleToWindow); 1127 return MakeResult(ConvertedScaleMode::ScaleToWindow);
1119 break;
1120 case NintendoScaleMode::Crop: 1128 case NintendoScaleMode::Crop:
1121 rb.PushEnum(ConvertedScaleMode::Crop); 1129 return MakeResult(ConvertedScaleMode::Crop);
1122 break;
1123 case NintendoScaleMode::NoCrop: 1130 case NintendoScaleMode::NoCrop:
1124 rb.PushEnum(ConvertedScaleMode::NoCrop); 1131 return MakeResult(ConvertedScaleMode::NoCrop);
1125 break;
1126 default: 1132 default:
1127 UNIMPLEMENTED_MSG("Unknown scaling mode {}", static_cast<u32>(mode)); 1133 return ERR_OPERATION_FAILED;
1128 rb.PushEnum(ConvertedScaleMode::None);
1129 break;
1130 } 1134 }
1131 } 1135 }
1132 1136