german77 4 лет назад
Родитель
Сommit
77fa4d4bf6

+ 1 - 1
src/common/input.h

@@ -29,7 +29,7 @@ enum class InputType {
     Ir,
     Ir,
 };
 };
 
 
-enum class BatteryLevel {
+enum class BatteryLevel : u32 {
     None,
     None,
     Empty,
     Empty,
     Critical,
     Critical,

+ 3 - 2
src/core/hid/emulated_console.cpp

@@ -209,10 +209,11 @@ int EmulatedConsole::SetCallback(ConsoleUpdateCallback update_callback) {
 
 
 void EmulatedConsole::DeleteCallback(int key) {
 void EmulatedConsole::DeleteCallback(int key) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
-    if (!callback_list.contains(key)) {
+    const auto& iterator = callback_list.find(key);
+    if (iterator == callback_list.end()) {
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         return;
         return;
     }
     }
-    callback_list.erase(key);
+    callback_list.erase(iterator);
 }
 }
 } // namespace Core::HID
 } // namespace Core::HID

+ 3 - 2
src/core/hid/emulated_controller.cpp

@@ -993,10 +993,11 @@ int EmulatedController::SetCallback(ControllerUpdateCallback update_callback) {
 
 
 void EmulatedController::DeleteCallback(int key) {
 void EmulatedController::DeleteCallback(int key) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
-    if (!callback_list.contains(key)) {
+    const auto& iterator = callback_list.find(key);
+    if (iterator == callback_list.end()) {
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         return;
         return;
     }
     }
-    callback_list.erase(key);
+    callback_list.erase(iterator);
 }
 }
 } // namespace Core::HID
 } // namespace Core::HID

+ 3 - 2
src/core/hid/emulated_devices.cpp

@@ -362,10 +362,11 @@ int EmulatedDevices::SetCallback(InterfaceUpdateCallback update_callback) {
 
 
 void EmulatedDevices::DeleteCallback(int key) {
 void EmulatedDevices::DeleteCallback(int key) {
     std::lock_guard lock{mutex};
     std::lock_guard lock{mutex};
-    if (!callback_list.contains(key)) {
+    const auto& iterator = callback_list.find(key);
+    if (iterator == callback_list.end()) {
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         return;
         return;
     }
     }
-    callback_list.erase(key);
+    callback_list.erase(iterator);
 }
 }
 } // namespace Core::HID
 } // namespace Core::HID

+ 3 - 0
src/core/hid/hid_core.cpp

@@ -3,6 +3,9 @@
 // Refer to the license.txt file included.
 // Refer to the license.txt file included.
 
 
 #include "common/assert.h"
 #include "common/assert.h"
+#include "core/hid/emulated_console.h"
+#include "core/hid/emulated_controller.h"
+#include "core/hid/emulated_devices.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 
 
 namespace Core::HID {
 namespace Core::HID {

+ 7 - 3
src/core/hid/hid_core.h

@@ -6,9 +6,13 @@
 
 
 #include <memory>
 #include <memory>
 
 
-#include "core/hid/emulated_console.h"
-#include "core/hid/emulated_controller.h"
-#include "core/hid/emulated_devices.h"
+#include "core/hid/hid_types.h"
+
+namespace Core::HID {
+class EmulatedConsole;
+class EmulatedController;
+class EmulatedDevices;
+} // namespace Core::HID
 
 
 namespace Core::HID {
 namespace Core::HID {
 
 

+ 10 - 2
src/core/hid/input_converter.h

@@ -4,9 +4,17 @@
 
 
 #pragma once
 #pragma once
 
 
-namespace Input {
+namespace Common::Input {
 struct CallbackStatus;
 struct CallbackStatus;
-};
+enum class BatteryLevel : u32;
+using BatteryStatus = BatteryLevel;
+struct AnalogStatus;
+struct ButtonStatus;
+struct MotionStatus;
+struct StickStatus;
+struct TouchStatus;
+struct TriggerStatus;
+}; // namespace Common::Input
 
 
 namespace Core::HID {
 namespace Core::HID {
 
 

+ 2 - 0
src/core/hle/service/am/applets/applet_controller.cpp

@@ -10,6 +10,8 @@
 #include "common/string_util.h"
 #include "common/string_util.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/frontend/applets/controller.h"
 #include "core/frontend/applets/controller.h"
+#include "core/hid/emulated_controller.h"
+#include "core/hid/hid_core.h"
 #include "core/hle/result.h"
 #include "core/hle/result.h"
 #include "core/hle/service/am/am.h"
 #include "core/hle/service/am/am.h"
 #include "core/hle/service/am/applets/applet_controller.h"
 #include "core/hle/service/am/applets/applet_controller.h"

+ 1 - 0
src/core/hle/service/hid/controllers/console_sixaxis.cpp

@@ -5,6 +5,7 @@
 #include "common/settings.h"
 #include "common/settings.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
+#include "core/hid/emulated_console.h"
 #include "core/hle/service/hid/controllers/console_sixaxis.h"
 #include "core/hle/service/hid/controllers/console_sixaxis.h"
 
 
 namespace Service::HID {
 namespace Service::HID {

+ 1 - 0
src/core/hle/service/hid/controllers/debug_pad.cpp

@@ -7,6 +7,7 @@
 #include "common/settings.h"
 #include "common/settings.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
+#include "core/hid/emulated_controller.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_types.h"
 #include "core/hid/hid_types.h"
 #include "core/hle/service/hid/controllers/debug_pad.h"
 #include "core/hle/service/hid/controllers/debug_pad.h"

+ 1 - 4
src/core/hle/service/hid/controllers/gesture.h

@@ -8,13 +8,10 @@
 #include "common/bit_field.h"
 #include "common/bit_field.h"
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "common/point.h"
 #include "common/point.h"
+#include "core/hid/emulated_console.h"
 #include "core/hle/service/hid/controllers/controller_base.h"
 #include "core/hle/service/hid/controllers/controller_base.h"
 #include "core/hle/service/hid/ring_lifo.h"
 #include "core/hle/service/hid/ring_lifo.h"
 
 
-namespace Core::HID {
-class EmulatedController;
-} // namespace Core::HID
-
 namespace Service::HID {
 namespace Service::HID {
 class Controller_Gesture final : public ControllerBase {
 class Controller_Gesture final : public ControllerBase {
 public:
 public:

+ 1 - 0
src/core/hle/service/hid/controllers/keyboard.cpp

@@ -7,6 +7,7 @@
 #include "common/settings.h"
 #include "common/settings.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
+#include "core/hid/emulated_devices.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hle/service/hid/controllers/keyboard.h"
 #include "core/hle/service/hid/controllers/keyboard.h"
 
 

+ 1 - 0
src/core/hle/service/hid/controllers/mouse.cpp

@@ -7,6 +7,7 @@
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
 #include "core/frontend/emu_window.h"
 #include "core/frontend/emu_window.h"
+#include "core/hid/emulated_devices.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hle/service/hid/controllers/mouse.h"
 #include "core/hle/service/hid/controllers/mouse.h"
 
 

+ 2 - 0
src/core/hle/service/hid/controllers/npad.cpp

@@ -12,6 +12,8 @@
 #include "common/settings.h"
 #include "common/settings.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
+#include "core/hid/emulated_controller.h"
+#include "core/hid/hid_core.h"
 #include "core/hle/kernel/k_event.h"
 #include "core/hle/kernel/k_event.h"
 #include "core/hle/kernel/k_readable_event.h"
 #include "core/hle/kernel/k_readable_event.h"
 #include "core/hle/kernel/k_writable_event.h"
 #include "core/hle/kernel/k_writable_event.h"

+ 5 - 1
src/core/hle/service/hid/controllers/npad.h

@@ -12,11 +12,15 @@
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "common/quaternion.h"
 #include "common/quaternion.h"
 #include "common/settings.h"
 #include "common/settings.h"
-#include "core/hid/hid_core.h"
 #include "core/hid/hid_types.h"
 #include "core/hid/hid_types.h"
 #include "core/hle/service/hid/controllers/controller_base.h"
 #include "core/hle/service/hid/controllers/controller_base.h"
 #include "core/hle/service/hid/ring_lifo.h"
 #include "core/hle/service/hid/ring_lifo.h"
 
 
+namespace Core::HID {
+class EmulatedController;
+enum class ControllerTriggerType;
+} // namespace Core::HID
+
 namespace Kernel {
 namespace Kernel {
 class KEvent;
 class KEvent;
 class KReadableEvent;
 class KReadableEvent;

+ 1 - 0
src/core/hle/service/hid/controllers/touchscreen.h

@@ -9,6 +9,7 @@
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "common/point.h"
 #include "common/point.h"
 #include "common/swap.h"
 #include "common/swap.h"
+#include "core/hid/emulated_console.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_types.h"
 #include "core/hid/hid_types.h"
 #include "core/hle/service/hid/controllers/controller_base.h"
 #include "core/hle/service/hid/controllers/controller_base.h"

+ 6 - 0
src/input_common/drivers/keyboard.cpp

@@ -7,6 +7,12 @@
 
 
 namespace InputCommon {
 namespace InputCommon {
 
 
+constexpr PadIdentifier identifier = {
+    .guid = Common::UUID{Common::INVALID_UUID},
+    .port = 0,
+    .pad = 0,
+};
+
 Keyboard::Keyboard(const std::string& input_engine_) : InputEngine(input_engine_) {
 Keyboard::Keyboard(const std::string& input_engine_) : InputEngine(input_engine_) {
     PreSetController(identifier);
     PreSetController(identifier);
 }
 }

+ 0 - 7
src/input_common/drivers/keyboard.h

@@ -32,13 +32,6 @@ public:
 
 
     /// Used for automapping features
     /// Used for automapping features
     std::vector<Common::ParamPackage> GetInputDevices() const override;
     std::vector<Common::ParamPackage> GetInputDevices() const override;
-
-private:
-    const PadIdentifier identifier = {
-        .guid = Common::UUID{Common::INVALID_UUID},
-        .port = 0,
-        .pad = 0,
-    };
 };
 };
 
 
 } // namespace InputCommon
 } // namespace InputCommon

+ 5 - 0
src/input_common/drivers/mouse.cpp

@@ -14,6 +14,11 @@
 namespace InputCommon {
 namespace InputCommon {
 constexpr int touch_axis_x = 10;
 constexpr int touch_axis_x = 10;
 constexpr int touch_axis_y = 11;
 constexpr int touch_axis_y = 11;
+constexpr PadIdentifier identifier = {
+    .guid = Common::UUID{Common::INVALID_UUID},
+    .port = 0,
+    .pad = 0,
+};
 
 
 Mouse::Mouse(const std::string input_engine_) : InputEngine(input_engine_) {
 Mouse::Mouse(const std::string input_engine_) : InputEngine(input_engine_) {
     PreSetController(identifier);
     PreSetController(identifier);

+ 0 - 5
src/input_common/drivers/mouse.h

@@ -62,11 +62,6 @@ private:
     void UpdateThread(std::stop_token stop_token);
     void UpdateThread(std::stop_token stop_token);
     void StopPanning();
     void StopPanning();
 
 
-    const PadIdentifier identifier = {
-        .guid = Common::UUID{Common::INVALID_UUID},
-        .port = 0,
-        .pad = 0,
-    };
     Common::Vec2<int> mouse_origin;
     Common::Vec2<int> mouse_origin;
     Common::Vec2<int> last_mouse_position;
     Common::Vec2<int> last_mouse_position;
     Common::Vec2<float> last_mouse_change;
     Common::Vec2<float> last_mouse_change;

+ 6 - 0
src/input_common/drivers/touch_screen.cpp

@@ -7,6 +7,12 @@
 
 
 namespace InputCommon {
 namespace InputCommon {
 
 
+constexpr PadIdentifier identifier = {
+    .guid = Common::UUID{Common::INVALID_UUID},
+    .port = 0,
+    .pad = 0,
+};
+
 TouchScreen::TouchScreen(const std::string input_engine_) : InputEngine(input_engine_) {
 TouchScreen::TouchScreen(const std::string input_engine_) : InputEngine(input_engine_) {
     PreSetController(identifier);
     PreSetController(identifier);
 }
 }

+ 1 - 7
src/input_common/drivers/touch_screen.h

@@ -37,14 +37,8 @@ public:
      */
      */
     void TouchReleased(std::size_t finger);
     void TouchReleased(std::size_t finger);
 
 
+    /// Resets all inputs to their initial value
     void ReleaseAllTouch();
     void ReleaseAllTouch();
-
-private:
-    const PadIdentifier identifier = {
-        .guid = Common::UUID{Common::INVALID_UUID},
-        .port = 0,
-        .pad = 0,
-    };
 };
 };
 
 
 } // namespace InputCommon
 } // namespace InputCommon

+ 3 - 2
src/input_common/input_engine.cpp

@@ -353,11 +353,12 @@ void InputEngine::SetMappingCallback(MappingCallback callback) {
 
 
 void InputEngine::DeleteCallback(int key) {
 void InputEngine::DeleteCallback(int key) {
     std::lock_guard lock{mutex_callback};
     std::lock_guard lock{mutex_callback};
-    if (!callback_list.contains(key)) {
+    const auto& iterator = callback_list.find(key);
+    if (iterator == callback_list.end()) {
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         LOG_ERROR(Input, "Tried to delete non-existent callback {}", key);
         return;
         return;
     }
     }
-    callback_list.erase(key);
+    callback_list.erase(iterator);
 }
 }
 
 
 } // namespace InputCommon
 } // namespace InputCommon

+ 1 - 0
src/yuzu/applets/qt_controller.cpp

@@ -10,6 +10,7 @@
 #include "common/string_util.h"
 #include "common/string_util.h"
 #include "core/core.h"
 #include "core/core.h"
 #include "core/hid/emulated_controller.h"
 #include "core/hid/emulated_controller.h"
+#include "core/hid/hid_core.h"
 #include "core/hid/hid_types.h"
 #include "core/hid/hid_types.h"
 #include "core/hle/lock.h"
 #include "core/hle/lock.h"
 #include "core/hle/service/hid/controllers/npad.h"
 #include "core/hle/service/hid/controllers/npad.h"

+ 2 - 3
src/yuzu/configuration/configure_input_player_widget.cpp

@@ -2594,9 +2594,8 @@ void PlayerControlPreview::DrawArrowButton(QPainter& p, const QPointF center,
             arrow_button[point] = center + QPointF(up_arrow_x * size, -up_arrow_y * size);
             arrow_button[point] = center + QPointF(up_arrow_x * size, -up_arrow_y * size);
             break;
             break;
         case Direction::Left:
         case Direction::Left:
-            // Compiler doesn't optimize this correctly
-            arrow_button[point] = center + QPointF(up_arrow_button[point * 2 + 1] * size,
-                                                   up_arrow_button[point * 2 + 0] * size);
+            // Compiler doesn't optimize this correctly check why
+            arrow_button[point] = center + QPointF(up_arrow_y * size, up_arrow_x * size);
             break;
             break;
         case Direction::None:
         case Direction::None:
             break;
             break;

+ 1 - 0
src/yuzu/configuration/configure_input_player_widget.h

@@ -9,6 +9,7 @@
 #include <QPointer>
 #include <QPointer>
 #include "common/input.h"
 #include "common/input.h"
 #include "common/settings.h"
 #include "common/settings.h"
+#include "core/hid/emulated_controller.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_types.h"
 #include "core/hid/hid_types.h"
 
 

+ 2 - 1
src/yuzu/debugger/controller.h

@@ -21,7 +21,8 @@ class System;
 
 
 namespace Core::HID {
 namespace Core::HID {
 class EmulatedController;
 class EmulatedController;
-}
+enum class ControllerTriggerType;
+} // namespace Core::HID
 
 
 class ControllerDialog : public QWidget {
 class ControllerDialog : public QWidget {
     Q_OBJECT
     Q_OBJECT

+ 1 - 0
src/yuzu/main.cpp

@@ -26,6 +26,7 @@
 #include "core/frontend/applets/controller.h"
 #include "core/frontend/applets/controller.h"
 #include "core/frontend/applets/general_frontend.h"
 #include "core/frontend/applets/general_frontend.h"
 #include "core/frontend/applets/software_keyboard.h"
 #include "core/frontend/applets/software_keyboard.h"
+#include "core/hid/emulated_controller.h"
 #include "core/hid/hid_core.h"
 #include "core/hid/hid_core.h"
 #include "core/hle/service/acc/profile_manager.h"
 #include "core/hle/service/acc/profile_manager.h"
 #include "core/hle/service/am/applet_ae.h"
 #include "core/hle/service/am/applet_ae.h"