Date: Sun, 2 Jan 2005 18:36:09 +0100
authorSam Lantinga <slouken@libsdl.org>
Mon, 03 Jan 2005 00:24:44 +0000
changeset 1021ddd058103e28
parent 1020 5b1cb1e9140d
child 1022 3d4f1930ed02
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
     1.1 --- a/src/events/SDL_keyboard.c	Sun Jan 02 05:11:16 2005 +0000
     1.2 +++ b/src/events/SDL_keyboard.c	Mon Jan 03 00:24:44 2005 +0000
     1.3 @@ -491,7 +491,8 @@
     1.4  			/*
     1.5  			 * jk 991215 - Added
     1.6  			 */
     1.7 -			if ( SDL_KeyRepeat.timestamp ) {
     1.8 +			if ( SDL_KeyRepeat.timestamp &&
     1.9 +			     SDL_KeyRepeat.evt.key.keysym.sym == keysym->sym ) {
    1.10  				SDL_KeyRepeat.timestamp = 0;
    1.11  			}
    1.12  			break;