summaryrefslogtreecommitdiff
path: root/src/main/engine/ui/x11/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/engine/ui/x11/ui.c')
-rw-r--r--src/main/engine/ui/x11/ui.c28
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);
}