input_common: Create an update engine
This commit is contained in:
parent
25b5675997
commit
243f2931b5
4 changed files with 37 additions and 19 deletions
|
@ -28,6 +28,28 @@
|
|||
|
||||
namespace InputCommon {
|
||||
|
||||
/// Dummy engine to get periodic updates
|
||||
class UpdateEngine final : public InputEngine {
|
||||
public:
|
||||
explicit UpdateEngine(std::string input_engine_) : InputEngine(std::move(input_engine_)) {
|
||||
PreSetController(identifier);
|
||||
}
|
||||
|
||||
void PumpEvents() {
|
||||
SetButton(identifier, 0, last_state);
|
||||
last_state = !last_state;
|
||||
}
|
||||
|
||||
private:
|
||||
static constexpr PadIdentifier identifier = {
|
||||
.guid = Common::UUID{},
|
||||
.port = 0,
|
||||
.pad = 0,
|
||||
};
|
||||
|
||||
bool last_state{};
|
||||
};
|
||||
|
||||
struct InputSubsystem::Impl {
|
||||
template <typename Engine>
|
||||
void RegisterEngine(std::string name, std::shared_ptr<Engine>& engine) {
|
||||
|
@ -45,6 +67,7 @@ struct InputSubsystem::Impl {
|
|||
void Initialize() {
|
||||
mapping_factory = std::make_shared<MappingFactory>();
|
||||
|
||||
RegisterEngine("updater", update_engine);
|
||||
RegisterEngine("keyboard", keyboard);
|
||||
RegisterEngine("mouse", mouse);
|
||||
RegisterEngine("touch", touch_screen);
|
||||
|
@ -74,6 +97,7 @@ struct InputSubsystem::Impl {
|
|||
}
|
||||
|
||||
void Shutdown() {
|
||||
UnregisterEngine(update_engine);
|
||||
UnregisterEngine(keyboard);
|
||||
UnregisterEngine(mouse);
|
||||
UnregisterEngine(touch_screen);
|
||||
|
@ -252,6 +276,7 @@ struct InputSubsystem::Impl {
|
|||
}
|
||||
|
||||
void PumpEvents() const {
|
||||
update_engine->PumpEvents();
|
||||
#ifdef HAVE_SDL2
|
||||
sdl->PumpEvents();
|
||||
#endif
|
||||
|
@ -263,6 +288,7 @@ struct InputSubsystem::Impl {
|
|||
|
||||
std::shared_ptr<MappingFactory> mapping_factory;
|
||||
|
||||
std::shared_ptr<UpdateEngine> update_engine;
|
||||
std::shared_ptr<Keyboard> keyboard;
|
||||
std::shared_ptr<Mouse> mouse;
|
||||
std::shared_ptr<TouchScreen> touch_screen;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue