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.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/main/engine/ui/x11/ui.c b/src/main/engine/ui/x11/ui.c
index fc7e0b7..07db3a6 100644
--- a/src/main/engine/ui/x11/ui.c
+++ b/src/main/engine/ui/x11/ui.c
@@ -35,7 +35,6 @@ typedef struct {
int close_window;
} X11UI;
-void (*on_loop_event)();
void (*on_expose_event)();
void (*on_resize_event)(UIEventResize *);
void (*on_mouse_press_event)(UIMouseButtonPressed *);
@@ -253,9 +252,11 @@ ui_on_generic_event(XEvent event)
}
void
-ui_set_loop_listener(void (*loop_event)())
+ui_set_loop_listener(UI *ui, void (*loop_event)(void *data), void *data)
{
- on_loop_event = loop_event;
+ ui->loop_event = malloc(sizeof(LoopEvent));
+ ui->loop_event->on_loop_event = loop_event;
+ ui->loop_event->data = data;
}
void
@@ -271,7 +272,7 @@ ui_set_resize_listener(void (*resize_event)(UIEventResize *))
}
void
-ui_set_mouse_press_listener(void (*mouse_press_event)(UIMouseButtonPressed *))
+ui_set_mouse_press_listener(void (*mouse_press_event)(UIMouseButtonPressed *), void *data)
{
on_mouse_press_event = mouse_press_event;
}
@@ -301,7 +302,7 @@ ui_loop(UI *ui)
ui_on_mouse_release(event);
}
- on_loop_event();
+ ui->loop_event->on_loop_event(ui->loop_event->data);
glXSwapBuffers(display, window);
}