From aef0f81f28a51aa6e84b7ae4a5610bf46446a7c9 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 5 Apr 2020 04:31:11 +0100 Subject: [PATCH] Offload keyboard tracker to the engine Centralising it in the backend breaks the enhanced branch's rebinding menu. --- src/Backends/GLFW3/Misc.cpp | 2 -- src/Backends/Misc.h | 1 - src/Backends/SDL2/Misc.cpp | 2 -- src/Main.cpp | 8 ++++++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Backends/GLFW3/Misc.cpp b/src/Backends/GLFW3/Misc.cpp index 0a45eff3..42b7650e 100644 --- a/src/Backends/GLFW3/Misc.cpp +++ b/src/Backends/GLFW3/Misc.cpp @@ -264,8 +264,6 @@ BOOL Backend_SystemTask(void) return FALSE; } - memcpy(backend_previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state)); - glfwPollEvents(); while (!bActive) diff --git a/src/Backends/Misc.h b/src/Backends/Misc.h index e6d11124..d69f33d8 100644 --- a/src/Backends/Misc.h +++ b/src/Backends/Misc.h @@ -85,7 +85,6 @@ enum extern BOOL bActive; extern BOOL backend_keyboard_state[BACKEND_KEYBOARD_TOTAL]; -extern BOOL backend_previous_keyboard_state[BACKEND_KEYBOARD_TOTAL]; void Backend_Init(void); void Backend_Deinit(void); diff --git a/src/Backends/SDL2/Misc.cpp b/src/Backends/SDL2/Misc.cpp index bb858d90..8b1ad40a 100644 --- a/src/Backends/SDL2/Misc.cpp +++ b/src/Backends/SDL2/Misc.cpp @@ -97,8 +97,6 @@ void PlaybackBackend_EnableDragAndDrop(void) BOOL Backend_SystemTask(void) { - memcpy(backend_previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state)); - while (SDL_PollEvent(NULL) || !bActive) { SDL_Event event; diff --git a/src/Main.cpp b/src/Main.cpp index 4b276eb5..2261f68f 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -385,12 +385,14 @@ void JoystickProc(void); BOOL SystemTask(void) { + static BOOL previous_keyboard_state[BACKEND_KEYBOARD_TOTAL]; + if (!Backend_SystemTask()) return FALSE; for (unsigned int i = 0; i < BACKEND_KEYBOARD_TOTAL; ++i) { - if (backend_keyboard_state[i] && !backend_previous_keyboard_state[i]) + if (backend_keyboard_state[i] && !previous_keyboard_state[i]) { switch (i) { @@ -476,7 +478,7 @@ BOOL SystemTask(void) break; } } - else if (!backend_keyboard_state[i] && backend_previous_keyboard_state[i]) + else if (!backend_keyboard_state[i] && previous_keyboard_state[i]) { switch (i) { @@ -560,6 +562,8 @@ BOOL SystemTask(void) } } + memcpy(previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state)); + // Run joystick code if (gbUseJoystick) JoystickProc();