Mercurial > sdl-ios-xcode
diff src/video/x11/SDL_x11video.c @ 4008:a19fd8bcdd52 SDL-1.2
Fixed bug #322
Need to resync the keyboard state every time we set a video mode, since
the code in SDL_video.c is clearing the keyboard state.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 06 Jul 2007 07:45:33 +0000 |
parents | 3270e88063a2 |
children | a6264945ac52 |
line wrap: on
line diff
--- a/src/video/x11/SDL_x11video.c Thu Jul 05 07:11:05 2007 +0000 +++ b/src/video/x11/SDL_x11video.c Fri Jul 06 07:45:33 2007 +0000 @@ -1078,33 +1078,6 @@ } } - /* Update the internal keyboard state */ - X11_SetKeyboardState(SDL_Display, NULL); - - /* When the window is first mapped, ignore non-modifier keys */ - { - Uint8 *keys = SDL_GetKeyState(NULL); - for ( i = 0; i < SDLK_LAST; ++i ) { - switch (i) { - case SDLK_NUMLOCK: - case SDLK_CAPSLOCK: - case SDLK_LCTRL: - case SDLK_RCTRL: - case SDLK_LSHIFT: - case SDLK_RSHIFT: - case SDLK_LALT: - case SDLK_RALT: - case SDLK_LMETA: - case SDLK_RMETA: - case SDLK_MODE: - break; - default: - keys[i] = SDL_RELEASED; - break; - } - } - } - /* Map them both and go fullscreen, if requested */ if ( ! SDL_windowid ) { XMapWindow(SDL_Display, SDL_Window); @@ -1185,6 +1158,34 @@ } } + /* Update the internal keyboard state */ + X11_SetKeyboardState(SDL_Display, NULL); + + /* When the window is first mapped, ignore non-modifier keys */ + if ( !current->w && !current->h ) { + Uint8 *keys = SDL_GetKeyState(NULL); + int i; + for ( i = 0; i < SDLK_LAST; ++i ) { + switch (i) { + case SDLK_NUMLOCK: + case SDLK_CAPSLOCK: + case SDLK_LCTRL: + case SDLK_RCTRL: + case SDLK_LSHIFT: + case SDLK_RSHIFT: + case SDLK_LALT: + case SDLK_RALT: + case SDLK_LMETA: + case SDLK_RMETA: + case SDLK_MODE: + break; + default: + keys[i] = SDL_RELEASED; + break; + } + } + } + /* Set up the new mode framebuffer */ if ( ((current->w != width) || (current->h != height)) || ((saved_flags&SDL_OPENGL) != (flags&SDL_OPENGL)) ) {