[HID] Added drivers filter for GetState

This commit is contained in:
Gliniak
2025-01-04 21:40:08 +01:00
parent d6ed8af4e7
commit 4584794e24
4 changed files with 11 additions and 6 deletions

View File

@@ -104,13 +104,16 @@ X_RESULT InputSystem::GetCapabilities(uint32_t user_index, uint32_t flags,
return X_ERROR_DEVICE_NOT_CONNECTED;
}
X_RESULT InputSystem::GetState(uint32_t user_index, X_INPUT_STATE* out_state) {
X_RESULT InputSystem::GetState(uint32_t user_index, uint32_t flags,
X_INPUT_STATE* out_state) {
SCOPE_profile_cpu_f("hid");
for (auto& driver : drivers_) {
std::vector<InputDriver*> filtered_drivers = FilterDrivers(flags);
for (auto& driver : filtered_drivers) {
X_RESULT result = driver->GetState(user_index, out_state);
if (result == X_ERROR_SUCCESS) {
UpdateUsedSlot(driver.get(), user_index, true);
UpdateUsedSlot(driver, user_index, true);
AdjustDeadzoneLevels(user_index, &out_state->gamepad);
if (out_state->gamepad.buttons != 0) {

View File

@@ -40,7 +40,8 @@ class InputSystem {
X_RESULT GetCapabilities(uint32_t user_index, uint32_t flags,
X_INPUT_CAPABILITIES* out_caps);
X_RESULT GetState(uint32_t user_index, X_INPUT_STATE* out_state);
X_RESULT GetState(uint32_t user_index, uint32_t flags,
X_INPUT_STATE* out_state);
X_RESULT SetState(uint32_t user_index, X_INPUT_VIBRATION* vibration);
X_RESULT GetKeystroke(uint32_t user_index, uint32_t flags,
X_INPUT_KEYSTROKE* out_keystroke);