From 264e4d83c0cb252b316f83ee6ee84b5bc163812b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 2 Nov 2001 19:49:14 +0000 Subject: [PATCH] Fixed key repeat interactions with event filters (thanks Elmar!) --- src/events/SDL_keyboard.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index 257e4a35f..f1220ccf0 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -514,16 +514,16 @@ printf("The '%s' key has been %s\n", SDL_GetKeyName(keysym->sym), if ( SDL_ProcessEvents[event.type] == SDL_ENABLE ) { event.key.state = state; event.key.keysym = *keysym; + /* + * jk 991215 - Added + */ + if (repeatable && (SDL_KeyRepeat.delay != 0)) { + SDL_KeyRepeat.evt = event; + SDL_KeyRepeat.firsttime = 1; + SDL_KeyRepeat.timestamp=SDL_GetTicks(); + } if ( (SDL_EventOK == NULL) || SDL_EventOK(&event) ) { posted = 1; - /* - * jk 991215 - Added - */ - if (repeatable && (SDL_KeyRepeat.delay != 0)) { - SDL_KeyRepeat.evt = event; - SDL_KeyRepeat.firsttime = 1; - SDL_KeyRepeat.timestamp=SDL_GetTicks(); - } SDL_PushEvent(&event); } } @@ -548,7 +548,9 @@ void SDL_CheckKeyRepeat(void) } else { if ( interval > (Uint32)SDL_KeyRepeat.interval ) { SDL_KeyRepeat.timestamp = now; - SDL_PushEvent(&SDL_KeyRepeat.evt); + if ( (SDL_EventOK == NULL) || SDL_EventOK(&SDL_KeyRepeat.evt) ) { + SDL_PushEvent(&SDL_KeyRepeat.evt); + } } } }