Merge pull request #7774 from lioncash/mapping

input_common/main: Pass MappingData by const reference in callbacks
master
Morph 2022-01-25 16:15:45 +07:00 committed by GitHub
commit 432f4441b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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;