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();