Use EmuWindow's PollEvents() in favor of CoreTiming for input polling
This commit is contained in:
parent
8ac1bb3b04
commit
892c46fb37
4 changed files with 7 additions and 26 deletions
|
@ -12,6 +12,8 @@
|
|||
|
||||
#include "citra/emu_window/emu_window_glfw.h"
|
||||
|
||||
#include "input_common/input_common.h"
|
||||
|
||||
EmuWindow_GLFW* EmuWindow_GLFW::GetEmuWindow(GLFWwindow* win) {
|
||||
return static_cast<EmuWindow_GLFW*>(glfwGetWindowUserPointer(win));
|
||||
}
|
||||
|
@ -125,6 +127,7 @@ void EmuWindow_GLFW::SwapBuffers() {
|
|||
/// Polls window events
|
||||
void EmuWindow_GLFW::PollEvents() {
|
||||
glfwPollEvents();
|
||||
InputCommon::g_user_input->Poll();
|
||||
}
|
||||
|
||||
/// Makes the GLFW OpenGL context current for the caller thread
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
|
||||
#include "citra_qt/version.h"
|
||||
|
||||
#include "input_common/input_common.h"
|
||||
|
||||
#define APP_NAME "citra"
|
||||
#define APP_VERSION "0.1-" VERSION
|
||||
#define APP_TITLE APP_NAME " " APP_VERSION
|
||||
|
@ -159,6 +161,7 @@ void GRenderWindow::DoneCurrent()
|
|||
}
|
||||
|
||||
void GRenderWindow::PollEvents() {
|
||||
InputCommon::g_user_input->Poll();
|
||||
}
|
||||
|
||||
// On Qt 5.0+, this correctly gets the size of the framebuffer (pixels).
|
||||
|
|
|
@ -8,30 +8,11 @@
|
|||
#include "input_common/sdl_input/sdl_input.h"
|
||||
#endif
|
||||
|
||||
#include "core/core_timing.h"
|
||||
#include "core/settings.h"
|
||||
|
||||
namespace InputCommon {
|
||||
|
||||
// User input system
|
||||
std::unique_ptr<InputBase> g_user_input;
|
||||
|
||||
// Event id for CoreTiming
|
||||
static int input_event;
|
||||
|
||||
// Ticks for CoreTiming event, same as VBlank in GPU
|
||||
static u64 frame_ticks;
|
||||
|
||||
/// Callback for CoreTiming
|
||||
static void InputCallback(u64 userdata, int cycles_late) {
|
||||
|
||||
// Call user input plugin Poll()
|
||||
if (g_user_input) g_user_input->Poll();
|
||||
|
||||
// Reschedule recurrent event
|
||||
CoreTiming::ScheduleEvent(frame_ticks - cycles_late, input_event);
|
||||
}
|
||||
|
||||
const std::string& InputBase::GetDeviceName() const {
|
||||
return device_name;
|
||||
}
|
||||
|
@ -64,12 +45,6 @@ void Init(InputBackends backend) {
|
|||
Shutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
// Setup CoreTiming
|
||||
frame_ticks = 268123480 / Settings::values.gpu_refresh_rate / 16;
|
||||
|
||||
input_event = CoreTiming::RegisterEvent("InputCommon::InputCallback", InputCallback);
|
||||
CoreTiming::ScheduleEvent(frame_ticks, input_event);
|
||||
}
|
||||
|
||||
void Shutdown() {
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace InputCommon {
|
|||
class SDLController final : public InputBase {
|
||||
public:
|
||||
SDLController();
|
||||
~SDLController();
|
||||
~SDLController() override;
|
||||
|
||||
/// Initializes input via SDL2
|
||||
bool Init() override;
|
||||
|
|
Loading…
Reference in a new issue