diff options
author | Zephyron <zephyron@citron-emu.org> | 2025-01-15 19:20:37 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2025-01-15 19:20:37 +1000 |
commit | 132077e18f491d12d305e94f594470d6b93e8d8d (patch) | |
tree | 656c8f3a0e79756914fe3314ae34f37733afc238 | |
parent | 236ad28d61d94d0848c863e2cefa168f75813f49 (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.txt | 14 | ||||
m--------- | externals/VulkanMemoryAllocator | 0 | ||||
m--------- | externals/vcpkg | 0 | ||||
-rw-r--r-- | src/core/hle/service/hid/hid_server.cpp | 7 | ||||
-rw-r--r-- | src/core/hle/service/hid/hid_server.h | 2 |
5 files changed, 16 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f1fabf78..23df5afc0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,21 +310,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 9 REQUIRED) if (CITRON_USE_LLVM_DEMANGLE) - find_package(LLVM 17.0.2 MODULE COMPONENTS Demangle) + find_package(LLVM MODULE COMPONENTS Demangle) endif() 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 (NOT CITRON_USE_EXTERNAL_VULKAN_HEADERS) find_package(VulkanHeaders 1.3.274 REQUIRED) diff --git a/externals/VulkanMemoryAllocator b/externals/VulkanMemoryAllocator -Subproject 3bab6924988e5f19bf36586a496156cf72f70d9 +Subproject f74c2d906f1537114fe0c0d855d5d27db91898c diff --git a/externals/vcpkg b/externals/vcpkg -Subproject d7112d1a4fb50410d3639f5f586972591d848be +Subproject d4f3e122069912636c123b7ece673f6e01513ce 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); |