Просмотр исходного кода

input_engine: Simplify PreSet* family of functions

We can make use of try_emplace() to insert values only if they don't
already exist.
Lioncash 4 лет назад
Родитель
Сommit
a9d39b6895
2 измененных файлов с 14 добавлено и 24 удалено
  1. 5 15
      src/input_common/input_engine.cpp
  2. 9 9
      src/input_common/input_engine.h

+ 5 - 15
src/input_common/input_engine.cpp

@@ -10,41 +10,31 @@ namespace InputCommon {
 
 
 void InputEngine::PreSetController(const PadIdentifier& identifier) {
 void InputEngine::PreSetController(const PadIdentifier& identifier) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
-    if (!controller_list.contains(identifier)) {
-        controller_list.insert_or_assign(identifier, ControllerData{});
-    }
+    controller_list.try_emplace(identifier);
 }
 }
 
 
 void InputEngine::PreSetButton(const PadIdentifier& identifier, int button) {
 void InputEngine::PreSetButton(const PadIdentifier& identifier, int button) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
     ControllerData& controller = controller_list.at(identifier);
     ControllerData& controller = controller_list.at(identifier);
-    if (!controller.buttons.contains(button)) {
-        controller.buttons.insert_or_assign(button, false);
-    }
+    controller.buttons.try_emplace(button, false);
 }
 }
 
 
 void InputEngine::PreSetHatButton(const PadIdentifier& identifier, int button) {
 void InputEngine::PreSetHatButton(const PadIdentifier& identifier, int button) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
     ControllerData& controller = controller_list.at(identifier);
     ControllerData& controller = controller_list.at(identifier);
-    if (!controller.hat_buttons.contains(button)) {
-        controller.hat_buttons.insert_or_assign(button, u8{0});
-    }
+    controller.hat_buttons.try_emplace(button, u8{0});
 }
 }
 
 
 void InputEngine::PreSetAxis(const PadIdentifier& identifier, int axis) {
 void InputEngine::PreSetAxis(const PadIdentifier& identifier, int axis) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
     ControllerData& controller = controller_list.at(identifier);
     ControllerData& controller = controller_list.at(identifier);
-    if (!controller.axes.contains(axis)) {
-        controller.axes.insert_or_assign(axis, 0.0f);
-    }
+    controller.axes.try_emplace(axis, 0.0f);
 }
 }
 
 
 void InputEngine::PreSetMotion(const PadIdentifier& identifier, int motion) {
 void InputEngine::PreSetMotion(const PadIdentifier& identifier, int motion) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
     ControllerData& controller = controller_list.at(identifier);
     ControllerData& controller = controller_list.at(identifier);
-    if (!controller.motions.contains(motion)) {
-        controller.motions.insert_or_assign(motion, BasicMotion{});
-    }
+    controller.motions.try_emplace(motion);
 }
 }
 
 
 void InputEngine::SetButton(const PadIdentifier& identifier, int button, bool value) {
 void InputEngine::SetButton(const PadIdentifier& identifier, int button, bool value) {

+ 9 - 9
src/input_common/input_engine.h

@@ -23,15 +23,15 @@ struct PadIdentifier {
     friend constexpr bool operator==(const PadIdentifier&, const PadIdentifier&) = default;
     friend constexpr bool operator==(const PadIdentifier&, const PadIdentifier&) = default;
 };
 };
 
 
-// Basic motion data containing data from the sensors and a timestamp in microsecons
+// Basic motion data containing data from the sensors and a timestamp in microseconds
 struct BasicMotion {
 struct BasicMotion {
-    float gyro_x;
-    float gyro_y;
-    float gyro_z;
-    float accel_x;
-    float accel_y;
-    float accel_z;
-    u64 delta_timestamp;
+    float gyro_x{};
+    float gyro_y{};
+    float gyro_z{};
+    float accel_x{};
+    float accel_y{};
+    float accel_z{};
+    u64 delta_timestamp{};
 };
 };
 
 
 // Stages of a battery charge
 // Stages of a battery charge
@@ -202,7 +202,7 @@ private:
         std::unordered_map<int, u8> hat_buttons;
         std::unordered_map<int, u8> hat_buttons;
         std::unordered_map<int, float> axes;
         std::unordered_map<int, float> axes;
         std::unordered_map<int, BasicMotion> motions;
         std::unordered_map<int, BasicMotion> motions;
-        BatteryLevel battery;
+        BatteryLevel battery{};
     };
     };
 
 
     void TriggerOnButtonChange(const PadIdentifier& identifier, int button, bool value);
     void TriggerOnButtonChange(const PadIdentifier& identifier, int button, bool value);