shithub: cstory

Download patch

ref: eaef25d5dad09b1b1d4a5862abe6da94672e1c68
parent: aef0f81f28a51aa6e84b7ae4a5610bf46446a7c9
author: Clownacy <[email protected]>
date: Sun Apr 5 09:26:08 EDT 2020

Change how backend keyboard status stuff works

--- a/src/Backends/GLFW3/Misc.cpp
+++ b/src/Backends/GLFW3/Misc.cpp
@@ -20,13 +20,13 @@
 
 #define DO_KEY(GLFW_KEY, BACKEND_KEY) \
 	case GLFW_KEY: \
-		backend_keyboard_state[BACKEND_KEY] = action == GLFW_PRESS; \
+		keyboard_state[BACKEND_KEY] = action == GLFW_PRESS; \
 		break;
 
 BOOL bActive = TRUE;
-BOOL backend_keyboard_state[BACKEND_KEYBOARD_TOTAL];
-BOOL backend_previous_keyboard_state[BACKEND_KEYBOARD_TOTAL];
 
+static BOOL keyboard_state[BACKEND_KEYBOARD_TOTAL];
+
 static GLFWcursor* cursor;
 
 static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods)
@@ -270,6 +270,11 @@
 		glfwWaitEvents();
 
 	return TRUE;
+}
+
+void Backend_GetKeyboardState(BOOL *out_keyboard_state)
+{
+	memcpy(out_keyboard_state, keyboard_state, sizeof(keyboard_state));
 }
 
 void Backend_ShowMessageBox(const char *title, const char *message)
--- a/src/Backends/Misc.h
+++ b/src/Backends/Misc.h
@@ -84,7 +84,6 @@
 };
 
 extern BOOL bActive;
-extern BOOL backend_keyboard_state[BACKEND_KEYBOARD_TOTAL];
 
 void Backend_Init(void);
 void Backend_Deinit(void);
@@ -95,6 +94,7 @@
 void Backend_SetCursor(const unsigned char *rgb_pixels, unsigned int width, unsigned int height);
 void PlaybackBackend_EnableDragAndDrop(void);
 BOOL Backend_SystemTask(void);
+void Backend_GetKeyboardState(BOOL *keyboard_state);
 void Backend_ShowMessageBox(const char *title, const char *message);
 unsigned long Backend_GetTicks(void);
 void Backend_Delay(unsigned int ticks);
--- a/src/Backends/SDL2/Misc.cpp
+++ b/src/Backends/SDL2/Misc.cpp
@@ -18,13 +18,13 @@
 
 #define DO_KEY(SDL_KEY, BACKEND_KEY) \
 	case SDL_KEY: \
-		backend_keyboard_state[BACKEND_KEY] = event.key.type == SDL_KEYDOWN; \
+		keyboard_state[BACKEND_KEY] = event.key.type == SDL_KEYDOWN; \
 		break;
 
 BOOL bActive = TRUE;
-BOOL backend_keyboard_state[BACKEND_KEYBOARD_TOTAL];
-BOOL backend_previous_keyboard_state[BACKEND_KEYBOARD_TOTAL];
 
+static BOOL keyboard_state[BACKEND_KEYBOARD_TOTAL];
+
 static SDL_Surface *cursor_surface;
 static SDL_Cursor *cursor;
 
@@ -236,6 +236,11 @@
 	}
 
 	return TRUE;
+}
+
+void Backend_GetKeyboardState(BOOL *out_keyboard_state)
+{
+	memcpy(out_keyboard_state, keyboard_state, sizeof(keyboard_state));
 }
 
 void Backend_ShowMessageBox(const char *title, const char *message)
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -390,9 +390,12 @@
 	if (!Backend_SystemTask())
 		return FALSE;
 
+	BOOL keyboard_state[BACKEND_KEYBOARD_TOTAL];
+	Backend_GetKeyboardState(keyboard_state);
+
 	for (unsigned int i = 0; i < BACKEND_KEYBOARD_TOTAL; ++i)
 	{
-		if (backend_keyboard_state[i] && !previous_keyboard_state[i])
+		if (keyboard_state[i] && !previous_keyboard_state[i])
 		{
 			switch (i)
 			{
@@ -478,7 +481,7 @@
 					break;
 			}
 		}
-		else if (!backend_keyboard_state[i] && previous_keyboard_state[i])
+		else if (!keyboard_state[i] && previous_keyboard_state[i])
 		{
 			switch (i)
 			{
@@ -562,7 +565,7 @@
 		}
 	}
 
-	memcpy(previous_keyboard_state, backend_keyboard_state, sizeof(backend_keyboard_state));
+	memcpy(previous_keyboard_state, keyboard_state, sizeof(keyboard_state));
 
 	// Run joystick code
 	if (gbUseJoystick)