shithub: cstory

Download patch

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)