mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-21 19:43:34 +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/debug_pad/debug_pad.h"
|
||||||
#include "hid_core/resources/keyboard/keyboard.h"
|
#include "hid_core/resources/keyboard/keyboard.h"
|
||||||
#include "hid_core/resources/mouse/mouse.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.h"
|
||||||
#include "hid_core/resources/npad/npad_types.h"
|
#include "hid_core/resources/npad/npad_types.h"
|
||||||
#include "hid_core/resources/npad/npad_vibration.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"},
|
{1, C<&IHidServer::ActivateDebugPad>, "ActivateDebugPad"},
|
||||||
{11, C<&IHidServer::ActivateTouchScreen>, "ActivateTouchScreen"},
|
{11, C<&IHidServer::ActivateTouchScreen>, "ActivateTouchScreen"},
|
||||||
{21, C<&IHidServer::ActivateMouse>, "ActivateMouse"},
|
{21, C<&IHidServer::ActivateMouse>, "ActivateMouse"},
|
||||||
{26, nullptr, "ActivateDebugMouse"},
|
{26, C<&IHidServer::ActivateDebugMouse>, "ActivateDebugMouse"},
|
||||||
{31, C<&IHidServer::ActivateKeyboard>, "ActivateKeyboard"},
|
{31, C<&IHidServer::ActivateKeyboard>, "ActivateKeyboard"},
|
||||||
{32, C<&IHidServer::SendKeyboardLockKeyEvent>, "SendKeyboardLockKeyEvent"},
|
{32, C<&IHidServer::SendKeyboardLockKeyEvent>, "SendKeyboardLockKeyEvent"},
|
||||||
{40, C<&IHidServer::AcquireXpadIdEventHandle>, "AcquireXpadIdEventHandle"},
|
{40, C<&IHidServer::AcquireXpadIdEventHandle>, "AcquireXpadIdEventHandle"},
|
||||||
@@ -235,6 +236,16 @@ Result IHidServer::ActivateMouse(ClientAppletResourceUserId aruid) {
|
|||||||
R_RETURN(GetResourceManager()->GetMouse()->Activate(aruid.pid));
|
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) {
|
Result IHidServer::ActivateKeyboard(ClientAppletResourceUserId aruid) {
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ private:
|
|||||||
Result ActivateDebugPad(ClientAppletResourceUserId aruid);
|
Result ActivateDebugPad(ClientAppletResourceUserId aruid);
|
||||||
Result ActivateTouchScreen(ClientAppletResourceUserId aruid);
|
Result ActivateTouchScreen(ClientAppletResourceUserId aruid);
|
||||||
Result ActivateMouse(ClientAppletResourceUserId aruid);
|
Result ActivateMouse(ClientAppletResourceUserId aruid);
|
||||||
|
Result ActivateDebugMouse(ClientAppletResourceUserId aruid);
|
||||||
Result ActivateKeyboard(ClientAppletResourceUserId aruid);
|
Result ActivateKeyboard(ClientAppletResourceUserId aruid);
|
||||||
Result SendKeyboardLockKeyEvent(u32 flags);
|
Result SendKeyboardLockKeyEvent(u32 flags);
|
||||||
Result AcquireXpadIdEventHandle(OutCopyHandle<Kernel::KReadableEvent> out_event,
|
Result AcquireXpadIdEventHandle(OutCopyHandle<Kernel::KReadableEvent> out_event,
|
||||||
|
|||||||
Reference in New Issue
Block a user