summaryrefslogtreecommitdiff
path: root/src/input_common/input_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/input_common/input_engine.cpp40
1 files changed, 24 insertions, 16 deletions
diff --git a/src/input_common/input_engine.cpp b/src/input_common/input_engine.cpp
index fce914348..a4a07d4ac 100644
--- a/src/input_common/input_engine.cpp
+++ b/src/input_common/input_engine.cpp
@@ -104,68 +104,76 @@ void InputEngine::SetMotion(const PadIdentifier& identifier, int motion, const B
104 104
105bool InputEngine::GetButton(const PadIdentifier& identifier, int button) const { 105bool InputEngine::GetButton(const PadIdentifier& identifier, int button) const {
106 std::lock_guard lock{mutex}; 106 std::lock_guard lock{mutex};
107 if (!controller_list.contains(identifier)) { 107 const auto controller_iter = controller_list.find(identifier);
108 if (controller_iter == controller_list.cend()) {
108 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), 109 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
109 identifier.pad, identifier.port); 110 identifier.pad, identifier.port);
110 return false; 111 return false;
111 } 112 }
112 ControllerData controller = controller_list.at(identifier); 113 const ControllerData& controller = controller_iter->second;
113 if (!controller.buttons.contains(button)) { 114 const auto button_iter = controller.buttons.find(button);
115 if (button_iter == controller.buttons.cend()) {
114 LOG_ERROR(Input, "Invalid button {}", button); 116 LOG_ERROR(Input, "Invalid button {}", button);
115 return false; 117 return false;
116 } 118 }
117 return controller.buttons.at(button); 119 return button_iter->second;
118} 120}
119 121
120bool InputEngine::GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const { 122bool InputEngine::GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const {
121 std::lock_guard lock{mutex}; 123 std::lock_guard lock{mutex};
122 if (!controller_list.contains(identifier)) { 124 const auto controller_iter = controller_list.find(identifier);
125 if (controller_iter == controller_list.cend()) {
123 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), 126 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
124 identifier.pad, identifier.port); 127 identifier.pad, identifier.port);
125 return false; 128 return false;
126 } 129 }
127 ControllerData controller = controller_list.at(identifier); 130 const ControllerData& controller = controller_iter->second;
128 if (!controller.hat_buttons.contains(button)) { 131 const auto hat_iter = controller.hat_buttons.find(button);
132 if (hat_iter == controller.hat_buttons.cend()) {
129 LOG_ERROR(Input, "Invalid hat button {}", button); 133 LOG_ERROR(Input, "Invalid hat button {}", button);
130 return false; 134 return false;
131 } 135 }
132 return (controller.hat_buttons.at(button) & direction) != 0; 136 return (hat_iter->second & direction) != 0;
133} 137}
134 138
135f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const { 139f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const {
136 std::lock_guard lock{mutex}; 140 std::lock_guard lock{mutex};
137 if (!controller_list.contains(identifier)) { 141 const auto controller_iter = controller_list.find(identifier);
142 if (controller_iter == controller_list.cend()) {
138 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), 143 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
139 identifier.pad, identifier.port); 144 identifier.pad, identifier.port);
140 return 0.0f; 145 return 0.0f;
141 } 146 }
142 ControllerData controller = controller_list.at(identifier); 147 const ControllerData& controller = controller_iter->second;
143 if (!controller.axes.contains(axis)) { 148 const auto axis_iter = controller.axes.find(axis);
149 if (axis_iter == controller.axes.cend()) {
144 LOG_ERROR(Input, "Invalid axis {}", axis); 150 LOG_ERROR(Input, "Invalid axis {}", axis);
145 return 0.0f; 151 return 0.0f;
146 } 152 }
147 return controller.axes.at(axis); 153 return axis_iter->second;
148} 154}
149 155
150BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const { 156BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const {
151 std::lock_guard lock{mutex}; 157 std::lock_guard lock{mutex};
152 if (!controller_list.contains(identifier)) { 158 const auto controller_iter = controller_list.find(identifier);
159 if (controller_iter == controller_list.cend()) {
153 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), 160 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
154 identifier.pad, identifier.port); 161 identifier.pad, identifier.port);
155 return BatteryLevel::Charging; 162 return BatteryLevel::Charging;
156 } 163 }
157 ControllerData controller = controller_list.at(identifier); 164 const ControllerData& controller = controller_iter->second;
158 return controller.battery; 165 return controller.battery;
159} 166}
160 167
161BasicMotion InputEngine::GetMotion(const PadIdentifier& identifier, int motion) const { 168BasicMotion InputEngine::GetMotion(const PadIdentifier& identifier, int motion) const {
162 std::lock_guard lock{mutex}; 169 std::lock_guard lock{mutex};
163 if (!controller_list.contains(identifier)) { 170 const auto controller_iter = controller_list.find(identifier);
171 if (controller_iter == controller_list.cend()) {
164 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(), 172 LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
165 identifier.pad, identifier.port); 173 identifier.pad, identifier.port);
166 return {}; 174 return {};
167 } 175 }
168 ControllerData controller = controller_list.at(identifier); 176 const ControllerData& controller = controller_iter->second;
169 return controller.motions.at(motion); 177 return controller.motions.at(motion);
170} 178}
171 179