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)