Browse Source

service: hid: Use span instead of vector reference

nce_cpp
german77 3 years ago
parent
commit
5e95870b1f
  1. 4
      src/core/hle/service/hid/controllers/npad.cpp
  2. 4
      src/core/hle/service/hid/controllers/npad.h
  3. 20
      src/core/hle/service/hid/hid.cpp

4
src/core/hle/service/hid/controllers/npad.cpp

@ -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,
const std::vector<Core::HID::VibrationValue>& vibration_values) {
std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
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;
} }

4
src/core/hle/service/hid/controllers/npad.h

@ -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,
const std::vector<Core::HID::VibrationValue>& vibration_values);
std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
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;

20
src/core/hle/service/hid/hid.cpp

@ -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 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) applet_resource->GetController<Controller_NPad>(HidController::NPad)
.VibrateControllers(vibration_device_handles, vibration_values); .VibrateControllers(vibration_device_handles, vibration_values);

Loading…
Cancel
Save