ref: aef0f81f28a51aa6e84b7ae4a5610bf46446a7c9
parent: d62ca286f6ed4bdf93afbd093769978290b2c640
author: Clownacy <Clownacy@users.noreply.github.com>
date: Sun Apr 5 00:31:11 EDT 2020
Offload keyboard tracker to the engine Centralising it in the backend breaks the enhanced branch's rebinding menu.
--- a/src/Backends/GLFW3/Misc.cpp
+++ b/src/Backends/GLFW3/Misc.cpp
@@ -264,8 +264,6 @@
return FALSE;
}
- memcpy(backend_previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state));
-
glfwPollEvents();
while (!bActive)
--- a/src/Backends/Misc.h
+++ b/src/Backends/Misc.h
@@ -85,7 +85,6 @@
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);
--- a/src/Backends/SDL2/Misc.cpp
+++ b/src/Backends/SDL2/Misc.cpp
@@ -97,8 +97,6 @@
BOOL Backend_SystemTask(void)
{
- memcpy(backend_previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state));
-
while (SDL_PollEvent(NULL) || !bActive)
{
SDL_Event event;
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -385,12 +385,14 @@
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 @@
break;
}
}
- else if (!backend_keyboard_state[i] && backend_previous_keyboard_state[i])
+ else if (!backend_keyboard_state[i] && previous_keyboard_state[i])
{
switch (i)
{
@@ -559,6 +561,8 @@
}
}
}
+
+ memcpy(previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state));
// Run joystick code
if (gbUseJoystick)