mirror of
https://git.citron-emu.org/Citron/Citron.git
synced 2025-02-04 15:26:25 +01:00
09ac66388c
Changes the interface as well to remove any unique methods that frontends needed to call such as StartJoystickEventHandler by conditionally starting the polling thread only if the frontend hasn't started it already. Additionally, moves all global state into a single SDLState class in order to guarantee that the destructors are called in the proper order
42 lines
978 B
C++
42 lines
978 B
C++
// Copyright 2018 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
#include "core/frontend/input.h"
|
|
#include "input_common/main.h"
|
|
|
|
union SDL_Event;
|
|
|
|
namespace Common {
|
|
class ParamPackage;
|
|
} // namespace Common
|
|
|
|
namespace InputCommon::Polling {
|
|
class DevicePoller;
|
|
enum class DeviceType;
|
|
} // namespace InputCommon::Polling
|
|
|
|
namespace InputCommon::SDL {
|
|
|
|
class State {
|
|
public:
|
|
/// Unresisters SDL device factories and shut them down.
|
|
virtual ~State() = default;
|
|
|
|
virtual std::vector<std::unique_ptr<InputCommon::Polling::DevicePoller>> GetPollers(
|
|
InputCommon::Polling::DeviceType type) = 0;
|
|
};
|
|
|
|
class NullState : public State {
|
|
public:
|
|
std::vector<std::unique_ptr<InputCommon::Polling::DevicePoller>> GetPollers(
|
|
InputCommon::Polling::DeviceType type) override {}
|
|
};
|
|
|
|
std::unique_ptr<State> Init();
|
|
|
|
} // namespace InputCommon::SDL
|