diff options
Diffstat (limited to 'src/main/engine/ui/x11/ui.c')
-rw-r--r-- | src/main/engine/ui/x11/ui.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/main/engine/ui/x11/ui.c b/src/main/engine/ui/x11/ui.c index b1086a9..2501f5c 100644 --- a/src/main/engine/ui/x11/ui.c +++ b/src/main/engine/ui/x11/ui.c @@ -38,7 +38,15 @@ void (*on_resize_event)(UIEventResize *); void (*on_mouse_press_event)(UIMouseButtonPressed *); void (*on_generic_event)(int); -void cleanup(void); +static void +cleanup(UI *ui) { + glXMakeCurrent(display, None, NULL); + glXDestroyContext(display, gl_context); + XDestroyWindow(display, window); + XCloseDisplay(display); + + free(ui); +} static Log *log = NULL; @@ -148,7 +156,7 @@ ui_on_expose(XEvent event) } static void -ui_on_resize(XEvent event) +ui_on_resize(UI *ui, XEvent event) { init_log(); @@ -161,6 +169,8 @@ ui_on_resize(XEvent event) } er->width = event.xconfigure.width; er->height = event.xconfigure.height; + ui->width = er->width; + ui->height = er->height; on_resize_event(er); } } @@ -244,7 +254,7 @@ ui_set_generic_listener(void (*generic_event)(int type)) } void -ui_loop(void) +ui_loop(UI *ui) { XEvent event; while (!close_window) { @@ -252,7 +262,7 @@ ui_loop(void) XNextEvent(display, &event); ui_on_generic_event(event); ui_on_expose(event); - ui_on_resize(event); + ui_on_resize(ui, event); ui_on_keypress(event); ui_on_mouse_press(event); ui_on_mouse_release(event); @@ -262,13 +272,5 @@ ui_loop(void) glXSwapBuffers(display, window); } - cleanup(); -} - -void -cleanup(void) { - glXMakeCurrent(display, None, NULL); - glXDestroyContext(display, gl_context); - XDestroyWindow(display, window); - XCloseDisplay(display); + cleanup(ui); } |