From cefc7550ee9148cb793a3f0f982b11ebac74d5fb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 3 Jan 2005 00:24:44 +0000 Subject: [PATCH] Date: Sun, 2 Jan 2005 18:36:09 +0100 From: Jon Daniel Subject: [SDL] KeyRepeat fix If you switch keys very fast and hold the last one it doesn't get repeated because the key release of the first key occured after the key press of the second key. Unfortunatly the key release of the first key sets SDL_KeyRepeat.timestamp = 0; causing the the second key not to repeat. This should be always reproducable. I've only checked this on x86-64 X11. To fix this I just added another condition to make sure the sym of the released key matches SDL_KeyRepeat.key.keysym.sym. --- src/events/SDL_keyboard.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index b6610ae97..8319d7f5b 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -491,7 +491,8 @@ printf("The '%s' key has been %s\n", SDL_GetKeyName(keysym->sym), /* * jk 991215 - Added */ - if ( SDL_KeyRepeat.timestamp ) { + if ( SDL_KeyRepeat.timestamp && + SDL_KeyRepeat.evt.key.keysym.sym == keysym->sym ) { SDL_KeyRepeat.timestamp = 0; } break;