int joy_id;
int axis_keydown[2];
#ifdef SDL_REDRAW_EVT
- int rdraw;
- SDL_Event redraw;
+ int redraw;
+ SDL_Event revent;
#endif
keybits_t keystate[SDLK_LAST / KEYBITS_WORD_BITS + 1];
// emulator keys should always be processed immediately lest one is lost
default:
#ifdef SDL_REDRAW_EVT
if (event->type == SDL_VIDEORESIZE) {
- state->rdraw = 1;
- state->redraw = *event;
+ state->redraw = 1;
+ state->revent = *event;
+ } else if (event->type == SDL_VIDEOEXPOSE) {
+ if (state->revent.type == SDL_NOEVENT) {
+ state->redraw = 1;
+ state->revent = *event;
+ }
} else
#endif
if (ext_event_handler != NULL)
}
#ifdef SDL_REDRAW_EVT
- // if the event queue has been emptied and resize events were in it
- if (state->rdraw && count == 0) {
+ // if the event queue has been emptied and resize/expose events were in it
+ if (state->redraw && count == 0) {
if (ext_event_handler != NULL)
- ext_event_handler(&state->redraw);
- state->rdraw = 0;
+ ext_event_handler(&state->revent);
+ state->redraw = 0;
+ state->revent.type = SDL_NOEVENT;
// dummy key event to force returning from the key loop,
// so the application has a chance to redraw the window
if (one_kc != NULL) {