mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-25 22:57:22 +00:00
Merge pull request #7774 from lioncash/mapping
input_common/main: Pass MappingData by const reference in callbacks
This commit is contained in:
commit
432f4441b9
5 changed files with 18 additions and 13 deletions
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
// Pad Identifier of data source
|
// Pad Identifier of data source
|
||||||
struct PadIdentifier {
|
struct PadIdentifier {
|
||||||
Common::UUID guid{};
|
Common::UUID guid{Common::INVALID_UUID};
|
||||||
std::size_t port{};
|
std::size_t port{};
|
||||||
std::size_t pad{};
|
std::size_t pad{};
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ struct UpdateCallback {
|
||||||
|
|
||||||
// Triggered if data changed on the controller and the engine is on configuring mode
|
// Triggered if data changed on the controller and the engine is on configuring mode
|
||||||
struct MappingCallback {
|
struct MappingCallback {
|
||||||
std::function<void(MappingData)> on_data;
|
std::function<void(const MappingData&)> on_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Input Identifier of data source
|
// Input Identifier of data source
|
||||||
|
|
|
@ -2,14 +2,13 @@
|
||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included
|
// Refer to the license.txt file included
|
||||||
|
|
||||||
#include "common/common_types.h"
|
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
#include "input_common/input_engine.h"
|
#include "input_common/input_engine.h"
|
||||||
#include "input_common/input_mapping.h"
|
#include "input_common/input_mapping.h"
|
||||||
|
|
||||||
namespace InputCommon {
|
namespace InputCommon {
|
||||||
|
|
||||||
MappingFactory::MappingFactory() {}
|
MappingFactory::MappingFactory() = default;
|
||||||
|
|
||||||
void MappingFactory::BeginMapping(Polling::InputType type) {
|
void MappingFactory::BeginMapping(Polling::InputType type) {
|
||||||
is_enabled = true;
|
is_enabled = true;
|
||||||
|
@ -19,7 +18,7 @@ void MappingFactory::BeginMapping(Polling::InputType type) {
|
||||||
second_axis = -1;
|
second_axis = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] const Common::ParamPackage MappingFactory::GetNextInput() {
|
Common::ParamPackage MappingFactory::GetNextInput() {
|
||||||
Common::ParamPackage input;
|
Common::ParamPackage input;
|
||||||
input_queue.Pop(input);
|
input_queue.Pop(input);
|
||||||
return input;
|
return input;
|
||||||
|
@ -57,7 +56,7 @@ void MappingFactory::StopMapping() {
|
||||||
void MappingFactory::RegisterButton(const MappingData& data) {
|
void MappingFactory::RegisterButton(const MappingData& data) {
|
||||||
Common::ParamPackage new_input;
|
Common::ParamPackage new_input;
|
||||||
new_input.Set("engine", data.engine);
|
new_input.Set("engine", data.engine);
|
||||||
if (data.pad.guid != Common::UUID{}) {
|
if (data.pad.guid.IsValid()) {
|
||||||
new_input.Set("guid", data.pad.guid.Format());
|
new_input.Set("guid", data.pad.guid.Format());
|
||||||
}
|
}
|
||||||
new_input.Set("port", static_cast<int>(data.pad.port));
|
new_input.Set("port", static_cast<int>(data.pad.port));
|
||||||
|
@ -93,7 +92,7 @@ void MappingFactory::RegisterButton(const MappingData& data) {
|
||||||
void MappingFactory::RegisterStick(const MappingData& data) {
|
void MappingFactory::RegisterStick(const MappingData& data) {
|
||||||
Common::ParamPackage new_input;
|
Common::ParamPackage new_input;
|
||||||
new_input.Set("engine", data.engine);
|
new_input.Set("engine", data.engine);
|
||||||
if (data.pad.guid != Common::UUID{}) {
|
if (data.pad.guid.IsValid()) {
|
||||||
new_input.Set("guid", data.pad.guid.Format());
|
new_input.Set("guid", data.pad.guid.Format());
|
||||||
}
|
}
|
||||||
new_input.Set("port", static_cast<int>(data.pad.port));
|
new_input.Set("port", static_cast<int>(data.pad.port));
|
||||||
|
@ -138,7 +137,7 @@ void MappingFactory::RegisterStick(const MappingData& data) {
|
||||||
void MappingFactory::RegisterMotion(const MappingData& data) {
|
void MappingFactory::RegisterMotion(const MappingData& data) {
|
||||||
Common::ParamPackage new_input;
|
Common::ParamPackage new_input;
|
||||||
new_input.Set("engine", data.engine);
|
new_input.Set("engine", data.engine);
|
||||||
if (data.pad.guid != Common::UUID{}) {
|
if (data.pad.guid.IsValid()) {
|
||||||
new_input.Set("guid", data.pad.guid.Format());
|
new_input.Set("guid", data.pad.guid.Format());
|
||||||
}
|
}
|
||||||
new_input.Set("port", static_cast<int>(data.pad.port));
|
new_input.Set("port", static_cast<int>(data.pad.port));
|
||||||
|
|
|
@ -3,8 +3,14 @@
|
||||||
// Refer to the license.txt file included
|
// Refer to the license.txt file included
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "common/param_package.h"
|
||||||
#include "common/threadsafe_queue.h"
|
#include "common/threadsafe_queue.h"
|
||||||
|
|
||||||
|
namespace InputCommon::Polling {
|
||||||
|
enum class InputType;
|
||||||
|
}
|
||||||
|
|
||||||
namespace InputCommon {
|
namespace InputCommon {
|
||||||
class InputEngine;
|
class InputEngine;
|
||||||
struct MappingData;
|
struct MappingData;
|
||||||
|
@ -20,7 +26,7 @@ public:
|
||||||
void BeginMapping(Polling::InputType type);
|
void BeginMapping(Polling::InputType type);
|
||||||
|
|
||||||
/// Returns an input event with mapping information from the input_queue
|
/// Returns an input event with mapping information from the input_queue
|
||||||
[[nodiscard]] const Common::ParamPackage GetNextInput();
|
[[nodiscard]] Common::ParamPackage GetNextInput();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers mapping input data from the driver
|
* Registers mapping input data from the driver
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace InputCommon {
|
||||||
struct InputSubsystem::Impl {
|
struct InputSubsystem::Impl {
|
||||||
void Initialize() {
|
void Initialize() {
|
||||||
mapping_factory = std::make_shared<MappingFactory>();
|
mapping_factory = std::make_shared<MappingFactory>();
|
||||||
MappingCallback mapping_callback{[this](MappingData data) { RegisterInput(data); }};
|
MappingCallback mapping_callback{[this](const MappingData& data) { RegisterInput(data); }};
|
||||||
|
|
||||||
keyboard = std::make_shared<Keyboard>("keyboard");
|
keyboard = std::make_shared<Keyboard>("keyboard");
|
||||||
keyboard->SetMappingCallback(mapping_callback);
|
keyboard->SetMappingCallback(mapping_callback);
|
||||||
|
@ -284,7 +284,7 @@ struct InputSubsystem::Impl {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterInput(MappingData data) {
|
void RegisterInput(const MappingData& data) {
|
||||||
mapping_factory->RegisterInput(data);
|
mapping_factory->RegisterInput(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,7 +394,7 @@ void InputSubsystem::BeginMapping(Polling::InputType type) {
|
||||||
impl->mapping_factory->BeginMapping(type);
|
impl->mapping_factory->BeginMapping(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Common::ParamPackage InputSubsystem::GetNextInput() const {
|
Common::ParamPackage InputSubsystem::GetNextInput() const {
|
||||||
return impl->mapping_factory->GetNextInput();
|
return impl->mapping_factory->GetNextInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ public:
|
||||||
void BeginMapping(Polling::InputType type);
|
void BeginMapping(Polling::InputType type);
|
||||||
|
|
||||||
/// Returns an input event with mapping information.
|
/// Returns an input event with mapping information.
|
||||||
[[nodiscard]] const Common::ParamPackage GetNextInput() const;
|
[[nodiscard]] Common::ParamPackage GetNextInput() const;
|
||||||
|
|
||||||
/// Stop polling from all backends.
|
/// Stop polling from all backends.
|
||||||
void StopMapping() const;
|
void StopMapping() const;
|
||||||
|
|
Loading…
Reference in a new issue