service: hid: Use span instead of vector reference

merge-requests/60/head
german77 2023-05-14 09:22:00 +07:00
parent 29c7176f55
commit 6e54615b16
3 changed files with 13 additions and 13 deletions

@ -979,8 +979,8 @@ void Controller_NPad::VibrateController(
} }
void Controller_NPad::VibrateControllers( void Controller_NPad::VibrateControllers(
const std::vector<Core::HID::VibrationDeviceHandle>& vibration_device_handles, std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
const std::vector<Core::HID::VibrationValue>& vibration_values) { std::span<const Core::HID::VibrationValue> vibration_values) {
if (!Settings::values.vibration_enabled.GetValue() && !permit_vibration_session_enabled) { if (!Settings::values.vibration_enabled.GetValue() && !permit_vibration_session_enabled) {
return; return;
} }

@ -112,8 +112,8 @@ public:
const Core::HID::VibrationValue& vibration_value); const Core::HID::VibrationValue& vibration_value);
void VibrateControllers( void VibrateControllers(
const std::vector<Core::HID::VibrationDeviceHandle>& vibration_device_handles, std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
const std::vector<Core::HID::VibrationValue>& vibration_values); std::span<const Core::HID::VibrationValue> vibration_values);
Core::HID::VibrationValue GetLastVibration( Core::HID::VibrationValue GetLastVibration(
const Core::HID::VibrationDeviceHandle& vibration_device_handle) const; const Core::HID::VibrationDeviceHandle& vibration_device_handle) const;

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