If event is not NULL, the next event is removed from the queue and stored in the SDL_Event
structure pointed to by event . The 1 returned refers to this event, immediately stored in the SDL Event
structure -- not an event to follow.
If event is NULL, it simply returns 1 if there is an event in the queue, but will not remove it from the
queue.
As this function may implicitly call SDL_PumpEvents (), you can only call this function in the thread
that set the video mode.
SDL_PollEvent () is the favored way of receiving system events since it can be done from the main loop
and does not suspend the main loop while waiting on an event to be posted.
The common practice is to fully process the event queue once every frame, usually as a first step before
updating the game's state:
while (game_is_still_running) {
SDL_Event event;
while (SDL_PollEvent(&event)) { // poll until all events are handled!
// decide what to do with this event.
}
// update game state, draw the current frame
}