summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2025-01-15 19:20:37 +1000
committerMike Lothian <mike@fireburn.co.uk>2025-05-11 12:17:03 +0100
commitb3ff92116e3073d3184dad1f0bfd24387c866f28 (patch)
tree730ac71f37aa2b8468530f10f18751a3d91d01f6
parent9ce7c82b18584b1b76a342e33f660b1b4763068d (diff)
fix: Implement SetGestureOutputRanges to handle unimplemented function error
- Added the SetGestureOutputRanges function to the IHidServer class to address the unimplemented function '92' error. - This fix was discovered through log analysis, which showed a critical assertion failure in the HID service for an unknown function '92'. - The log indicated a userspace panic and backtrace, pointing to the need for implementing this function to prevent execution breaks. - Updated CMakeLists.txt to remove specific version requirements for several packages, enhancing flexibility. - Updated subproject commit references for VulkanMemoryAllocator and vcpkg. - REF: https://switchbrew.org/wiki/HID_services#ActivateGesture
-rw-r--r--CMakeLists.txt14
m---------externals/VulkanMemoryAllocator0
m---------externals/vcpkg0
-rw-r--r--src/core/hle/service/hid/hid_server.cpp7
-rw-r--r--src/core/hle/service/hid/hid_server.h2
5 files changed, 16 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07a8d34a7..16303e57f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -316,21 +316,21 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
# =======================================================================
# Enforce the search mode of non-required packages for better and shorter failure messages
-find_package(Boost 1.79.0 REQUIRED context)
-find_package(enet 1.3 MODULE)
+find_package(Boost REQUIRED context)
+find_package(enet MODULE)
find_package(fmt 11 REQUIRED)
find_package(lz4 REQUIRED)
-find_package(nlohmann_json 3.8 REQUIRED)
-find_package(Opus 1.3 MODULE)
+find_package(nlohmann_json REQUIRED)
+find_package(Opus MODULE)
find_package(RenderDoc MODULE)
find_package(SimpleIni MODULE)
find_package(stb MODULE)
find_package(VulkanMemoryAllocator CONFIG)
-find_package(ZLIB 1.2 REQUIRED)
-find_package(zstd 1.5 REQUIRED)
+find_package(ZLIB REQUIRED)
+find_package(zstd REQUIRED)
if (YUZU_USE_LLVM_DEMANGLE)
- find_package(LLVM 17.0.2 MODULE COMPONENTS Demangle)
+ find_package(LLVM MODULE COMPONENTS Demangle)
endif()
if (NOT YUZU_USE_EXTERNAL_VULKAN_HEADERS)
diff --git a/externals/VulkanMemoryAllocator b/externals/VulkanMemoryAllocator
-Subproject 3bab6924988e5f19bf36586a496156cf72f70d9
+Subproject f74c2d906f1537114fe0c0d855d5d27db91898c
diff --git a/externals/vcpkg b/externals/vcpkg
-Subproject 1a66c32c6f90c2f646529975c3c076ed3dbdae0
+Subproject c82f74667287d3dc386bce81e44964370c91a28
diff --git a/src/core/hle/service/hid/hid_server.cpp b/src/core/hle/service/hid/hid_server.cpp
index 926a3bfe9..602a5ab52 100644
--- a/src/core/hle/service/hid/hid_server.cpp
+++ b/src/core/hle/service/hid/hid_server.cpp
@@ -184,6 +184,7 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{1003, C<&IHidServer::IsFirmwareUpdateNeededForNotification>, "IsFirmwareUpdateNeededForNotification"},
{1004, C<&IHidServer::SetTouchScreenResolution>, "SetTouchScreenResolution"},
{2000, nullptr, "ActivateDigitizer"},
+ {92, C<&IHidServer::SetGestureOutputRanges>, "SetGestureOutputRanges"},
};
// clang-format on
@@ -1436,4 +1437,10 @@ std::shared_ptr<ResourceManager> IHidServer::GetResourceManager() {
return resource_manager;
}
+Result IHidServer::SetGestureOutputRanges(u32 param1, u32 param2, u32 param3, u32 param4) {
+ LOG_WARNING(Service_HID, "SetGestureOutputRanges called with params: {}, {}, {}, {}", param1, param2, param3, param4);
+ // REF: https://switchbrew.org/wiki/HID_services , Undocumented. 92 [18.0.0+] SetGestureOutputRanges
+ R_SUCCEED();
+}
+
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/hid_server.h b/src/core/hle/service/hid/hid_server.h
index cfa31c2de..437c5bd9a 100644
--- a/src/core/hle/service/hid/hid_server.h
+++ b/src/core/hle/service/hid/hid_server.h
@@ -31,6 +31,8 @@ public:
std::shared_ptr<ResourceManager> GetResourceManager();
+ Result SetGestureOutputRanges(u32, u32, u32, u32);
+
private:
Result CreateAppletResource(OutInterface<IAppletResource> out_applet_resource,
ClientAppletResourceUserId aruid);