Handle window events from screen.c

Only the screen knows what to do on window events.

This paves the way to handle more window events.
This commit is contained in:
Romain Vimont 2019-10-20 15:32:33 +02:00
parent 6996cbf5d3
commit f6f2868868
3 changed files with 16 additions and 6 deletions

View file

@ -144,12 +144,7 @@ handle_event(SDL_Event *event, bool control) {
} }
break; break;
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
switch (event->window.event) { screen_handle_window_event(&screen, &event->window);
case SDL_WINDOWEVENT_EXPOSED:
case SDL_WINDOWEVENT_SIZE_CHANGED:
screen_render(&screen);
break;
}
break; break;
case SDL_TEXTINPUT: case SDL_TEXTINPUT:
if (!control) { if (!control) {

View file

@ -327,3 +327,14 @@ screen_resize_to_pixel_perfect(struct screen *screen) {
LOGD("Resized to pixel-perfect"); LOGD("Resized to pixel-perfect");
} }
} }
void
screen_handle_window_event(struct screen *screen,
const SDL_WindowEvent *event) {
switch (event->event) {
case SDL_WINDOWEVENT_EXPOSED:
case SDL_WINDOWEVENT_SIZE_CHANGED:
screen_render(screen);
break;
}
}

View file

@ -76,4 +76,8 @@ screen_resize_to_fit(struct screen *screen);
void void
screen_resize_to_pixel_perfect(struct screen *screen); screen_resize_to_pixel_perfect(struct screen *screen);
// react to window events
void
screen_handle_window_event(struct screen *screen, const SDL_WindowEvent *event);
#endif #endif