diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/ui/x11/ui.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main/ui/x11/ui.c b/src/main/ui/x11/ui.c index 591c90e..8e5ce45 100644 --- a/src/main/ui/x11/ui.c +++ b/src/main/ui/x11/ui.c @@ -99,16 +99,21 @@ ui_init() glXMakeCurrent(display, window, gl_context); } +static void +ui_on_expose(XEvent event, void (*draw_frame)()) +{ + if (event.type != Expose) return; + draw_frame(); + glXSwapBuffers(display, window); +} + void ui_loop(void (*draw_frame)()) { XEvent event; while (1) { XNextEvent(display, &event); - if (event.type == Expose) { - draw_frame(); - glXSwapBuffers(display, window); - } + ui_on_expose(event, draw_frame); if (event.type == KeyPress) { break; } |