fix issue?

This commit is contained in:
lizzie 2026-06-11 07:12:20 +00:00
parent 2be6c82bd6
commit 07b3c9192a
5 changed files with 22 additions and 41 deletions

View file

@ -702,8 +702,7 @@ Result IHidServer::AcquireNpadStyleSetUpdateEventHandle(
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}, unknown={}", npad_id,
aruid.pid, unknown);
R_RETURN(GetResourceManager()->GetNpad()->AcquireNpadStyleSetUpdateEventHandle(
aruid.pid, out_event, npad_id));
R_RETURN(GetResourceManager()->GetNpad()->AcquireNpadStyleSetUpdateEventHandle(system.Kernel(), aruid.pid, out_event, npad_id));
}
Result IHidServer::DisconnectNpad(Core::HID::NpadIdType npad_id, ClientAppletResourceUserId aruid) {

View file

@ -202,7 +202,7 @@ void NPad::InitNewlyAddedController(u64 aruid, Core::HID::NpadIdType npad_id) {
return;
}
if (controller_type == Core::HID::NpadStyleIndex::None) {
npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
npad_resource.SignalStyleSetUpdateEvent(hid_core.kernel, aruid, npad_id);
return;
}
@ -386,7 +386,7 @@ void NPad::InitNewlyAddedController(u64 aruid, Core::HID::NpadIdType npad_id) {
Common::Input::PollingMode::Active);
}
npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
npad_resource.SignalStyleSetUpdateEvent(hid_core.kernel, aruid, npad_id);
WriteEmptyEntry(controller.shared_memory);
hid_core.SetLastActiveController(npad_id);
abstracted_pads[NpadIdTypeToIndex(npad_id)].Update();
@ -793,10 +793,9 @@ bool NPad::SetNpadMode(u64 aruid, Core::HID::NpadIdType& new_npad_id, Core::HID:
return true;
}
Result NPad::AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
Core::HID::NpadIdType npad_id) {
Result NPad::AcquireNpadStyleSetUpdateEventHandle(Kernel::KernelCore& kernel, u64 aruid, Kernel::KReadableEvent** out_event, Core::HID::NpadIdType npad_id) {
std::scoped_lock lock{mutex};
return npad_resource.AcquireNpadStyleSetUpdateEventHandle(aruid, out_event, npad_id);
return npad_resource.AcquireNpadStyleSetUpdateEventHandle(kernel, aruid, out_event, npad_id);
}
void NPad::AddNewControllerAt(u64 aruid, Core::HID::NpadStyleIndex controller,
@ -859,7 +858,7 @@ Result NPad::DisconnectNpad(u64 aruid, Core::HID::NpadIdType npad_id) {
controller.is_dual_right_connected = true;
controller.is_connected = false;
controller.device->Disconnect();
npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
npad_resource.SignalStyleSetUpdateEvent(hid_core.kernel, aruid, npad_id);
WriteEmptyEntry(shared_memory);
return ResultSuccess;
}

View file

@ -84,7 +84,7 @@ public:
bool SetNpadMode(u64 aruid, Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType npad_id,
NpadJoyDeviceType npad_device_type, NpadJoyAssignmentMode assignment_mode);
Result AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
Result AcquireNpadStyleSetUpdateEventHandle(Kernel::KernelCore& kernel, u64 aruid, Kernel::KReadableEvent** out_event,
Core::HID::NpadIdType npad_id);
// Adds a new controller at an index.

View file

@ -14,8 +14,7 @@
namespace Service::HID {
NPadResource::NPadResource(Kernel::KernelCore& kernel_, KernelHelpers::ServiceContext& context)
: kernel{kernel_}
, service_context{context}
: service_context{context}
{}
NPadResource::~NPadResource() = default;
@ -508,9 +507,7 @@ Result NPadResource::IsAssigningSingleOnSlSrPressEnabled(bool& is_enabled, u64 a
return ResultSuccess;
}
Result NPadResource::AcquireNpadStyleSetUpdateEventHandle(u64 aruid,
Kernel::KReadableEvent** out_event,
Core::HID::NpadIdType npad_id) {
Result NPadResource::AcquireNpadStyleSetUpdateEventHandle(Kernel::KernelCore& kernel, u64 aruid, Kernel::KReadableEvent** out_event, Core::HID::NpadIdType npad_id) {
const u64 aruid_index = GetIndexFromAruid(aruid);
if (aruid_index >= AruidIndexMax) {
return ResultNpadNotConnected;
@ -535,7 +532,7 @@ Result NPadResource::AcquireNpadStyleSetUpdateEventHandle(u64 aruid,
return ResultSuccess;
}
Result NPadResource::SignalStyleSetUpdateEvent(u64 aruid, Core::HID::NpadIdType npad_id) {
Result NPadResource::SignalStyleSetUpdateEvent(Kernel::KernelCore& kernel, u64 aruid, Core::HID::NpadIdType npad_id) {
const u64 aruid_index = GetIndexFromAruid(aruid);
if (aruid_index >= AruidIndexMax) {
return ResultNpadNotConnected;
@ -547,8 +544,7 @@ Result NPadResource::SignalStyleSetUpdateEvent(u64 aruid, Core::HID::NpadIdType
return ResultSuccess;
}
Result NPadResource::GetHomeProtectionEnabled(bool& is_enabled, u64 aruid,
Core::HID::NpadIdType npad_id) const {
Result NPadResource::GetHomeProtectionEnabled(bool& is_enabled, u64 aruid, Core::HID::NpadIdType npad_id) const {
const u64 aruid_index = GetIndexFromAruid(aruid);
if (aruid_index >= AruidIndexMax) {
return ResultNpadNotConnected;
@ -558,8 +554,7 @@ Result NPadResource::GetHomeProtectionEnabled(bool& is_enabled, u64 aruid,
return ResultSuccess;
}
Result NPadResource::SetHomeProtectionEnabled(u64 aruid, Core::HID::NpadIdType npad_id,
bool is_enabled) {
Result NPadResource::SetHomeProtectionEnabled(u64 aruid, Core::HID::NpadIdType npad_id, bool is_enabled) {
const u64 aruid_index = GetIndexFromAruid(aruid);
if (aruid_index >= AruidIndexMax) {
return ResultNpadNotConnected;

View file

@ -84,11 +84,9 @@ public:
Result GetNpadJoyHoldType(NpadJoyHoldType& hold_type, u64 aruid) const;
Result SetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode activation_mode);
Result GetNpadHandheldActivationMode(NpadHandheldActivationMode& activation_mode,
u64 aruid) const;
Result GetNpadHandheldActivationMode(NpadHandheldActivationMode& activation_mode, u64 aruid) const;
Result SetSupportedNpadIdType(u64 aruid,
std::span<const Core::HID::NpadIdType> supported_npad_list);
Result SetSupportedNpadIdType(u64 aruid, std::span<const Core::HID::NpadIdType> supported_npad_list);
bool IsControllerSupported(u64 aruid, Core::HID::NpadStyleIndex style_index) const;
Result SetLrAssignmentMode(u64 aruid, bool is_enabled);
@ -97,28 +95,20 @@ public:
Result SetAssigningSingleOnSlSrPress(u64 aruid, bool is_enabled);
Result IsAssigningSingleOnSlSrPressEnabled(bool& is_enabled, u64 aruid) const;
Result AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
Core::HID::NpadIdType npad_id);
Result SignalStyleSetUpdateEvent(u64 aruid, Core::HID::NpadIdType npad_id);
Result GetHomeProtectionEnabled(bool& is_enabled, u64 aruid,
Core::HID::NpadIdType npad_id) const;
Result AcquireNpadStyleSetUpdateEventHandle(Kernel::KernelCore& kernel, u64 aruid, Kernel::KReadableEvent** out_event, Core::HID::NpadIdType npad_id);
Result SignalStyleSetUpdateEvent(Kernel::KernelCore& kernel, u64 aruid, Core::HID::NpadIdType npad_id);
Result GetHomeProtectionEnabled(bool& is_enabled, u64 aruid, Core::HID::NpadIdType npad_id) const;
Result SetHomeProtectionEnabled(u64 aruid, Core::HID::NpadIdType npad_id, bool is_enabled);
Result SetNpadAnalogStickUseCenterClamp(u64 aruid, bool is_enabled);
Result SetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id, std::size_t index,
Core::HID::NpadButton button_config);
Core::HID::NpadButton GetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id,
std::size_t index, Core::HID::NpadButton mask,
bool is_enabled);
Result SetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id, std::size_t index, Core::HID::NpadButton button_config);
Core::HID::NpadButton GetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id, std::size_t index, Core::HID::NpadButton mask, bool is_enabled);
void ResetButtonConfig();
Result SetNpadCaptureButtonAssignment(u64 aruid, Core::HID::NpadStyleSet npad_style_set,
Core::HID::NpadButton button_assignment);
Result SetNpadCaptureButtonAssignment(u64 aruid, Core::HID::NpadStyleSet npad_style_set, Core::HID::NpadButton button_assignment);
Result ClearNpadCaptureButtonAssignment(u64 aruid);
std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list,
u64 aruid) const;
std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list, u64 aruid) const;
Result SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled);
@ -127,10 +117,8 @@ private:
AruidRegisterList registration_list{};
std::array<NpadState, AruidIndexMax> state{};
u64 active_data_aruid{};
KernelHelpers::ServiceContext& service_context;
NpadJoyHoldType default_hold_type{};
s32 ref_counter{};
Kernel::KernelCore& kernel;
KernelHelpers::ServiceContext& service_context;
};
} // namespace Service::HID