|
|
|
@ -1601,16 +1601,16 @@ void Hid::SendVibrationValues(HLERequestContext& ctx) { |
|
|
|
IPC::RequestParser rp{ctx}; |
|
|
|
const auto applet_resource_user_id{rp.Pop<u64>()}; |
|
|
|
|
|
|
|
const auto handles = ctx.ReadBuffer(0); |
|
|
|
const auto vibrations = ctx.ReadBuffer(1); |
|
|
|
|
|
|
|
std::vector<Core::HID::VibrationDeviceHandle> vibration_device_handles( |
|
|
|
handles.size() / sizeof(Core::HID::VibrationDeviceHandle)); |
|
|
|
std::vector<Core::HID::VibrationValue> vibration_values(vibrations.size() / |
|
|
|
sizeof(Core::HID::VibrationValue)); |
|
|
|
|
|
|
|
std::memcpy(vibration_device_handles.data(), handles.data(), handles.size()); |
|
|
|
std::memcpy(vibration_values.data(), vibrations.data(), vibrations.size()); |
|
|
|
const auto handle_data = ctx.ReadBuffer(0); |
|
|
|
const auto handle_count = ctx.GetReadBufferNumElements<Core::HID::VibrationDeviceHandle>(0); |
|
|
|
const auto vibration_data = ctx.ReadBuffer(1); |
|
|
|
const auto vibration_count = ctx.GetReadBufferNumElements<Core::HID::VibrationValue>(1); |
|
|
|
|
|
|
|
auto vibration_device_handles = |
|
|
|
std::span(reinterpret_cast<const Core::HID::VibrationDeviceHandle*>(handle_data.data()), |
|
|
|
handle_count); |
|
|
|
auto vibration_values = std::span( |
|
|
|
reinterpret_cast<const Core::HID::VibrationValue*>(vibration_data.data()), vibration_count); |
|
|
|
|
|
|
|
applet_resource->GetController<Controller_NPad>(HidController::NPad) |
|
|
|
.VibrateControllers(vibration_device_handles, vibration_values); |
|
|
|
|