mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-21 11:33:35 +00:00
hid: Implement ActivateDebugMouse function
Adds implementation for the missing ActivateDebugMouse HID service function that was causing crashes when games attempted to call it. - Add ActivateDebugMouse declaration to IHidServer header - Implement ActivateDebugMouse function following the same pattern as ActivateMouse - Update function table to call the actual implementation instead of nullptr - Add missing include for debug_mouse.h Fixes crashes in games (GEX Trilogy) that use debug mouse functionality. Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "hid_core/resources/debug_pad/debug_pad.h"
|
||||
#include "hid_core/resources/keyboard/keyboard.h"
|
||||
#include "hid_core/resources/mouse/mouse.h"
|
||||
#include "hid_core/resources/mouse/debug_mouse.h"
|
||||
#include "hid_core/resources/npad/npad.h"
|
||||
#include "hid_core/resources/npad/npad_types.h"
|
||||
#include "hid_core/resources/npad/npad_vibration.h"
|
||||
@@ -49,7 +50,7 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
|
||||
{1, C<&IHidServer::ActivateDebugPad>, "ActivateDebugPad"},
|
||||
{11, C<&IHidServer::ActivateTouchScreen>, "ActivateTouchScreen"},
|
||||
{21, C<&IHidServer::ActivateMouse>, "ActivateMouse"},
|
||||
{26, nullptr, "ActivateDebugMouse"},
|
||||
{26, C<&IHidServer::ActivateDebugMouse>, "ActivateDebugMouse"},
|
||||
{31, C<&IHidServer::ActivateKeyboard>, "ActivateKeyboard"},
|
||||
{32, C<&IHidServer::SendKeyboardLockKeyEvent>, "SendKeyboardLockKeyEvent"},
|
||||
{40, C<&IHidServer::AcquireXpadIdEventHandle>, "AcquireXpadIdEventHandle"},
|
||||
@@ -235,6 +236,16 @@ Result IHidServer::ActivateMouse(ClientAppletResourceUserId aruid) {
|
||||
R_RETURN(GetResourceManager()->GetMouse()->Activate(aruid.pid));
|
||||
}
|
||||
|
||||
Result IHidServer::ActivateDebugMouse(ClientAppletResourceUserId aruid) {
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
|
||||
|
||||
if (!firmware_settings->IsDeviceManaged()) {
|
||||
R_TRY(GetResourceManager()->GetDebugMouse()->Activate());
|
||||
}
|
||||
|
||||
R_RETURN(GetResourceManager()->GetDebugMouse()->Activate(aruid.pid));
|
||||
}
|
||||
|
||||
Result IHidServer::ActivateKeyboard(ClientAppletResourceUserId aruid) {
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ private:
|
||||
Result ActivateDebugPad(ClientAppletResourceUserId aruid);
|
||||
Result ActivateTouchScreen(ClientAppletResourceUserId aruid);
|
||||
Result ActivateMouse(ClientAppletResourceUserId aruid);
|
||||
Result ActivateDebugMouse(ClientAppletResourceUserId aruid);
|
||||
Result ActivateKeyboard(ClientAppletResourceUserId aruid);
|
||||
Result SendKeyboardLockKeyEvent(u32 flags);
|
||||
Result AcquireXpadIdEventHandle(OutCopyHandle<Kernel::KReadableEvent> out_event,
|
||||
|
||||
Reference in New Issue
Block a user