diff options
Diffstat (limited to 'src/main/ui')
-rw-r--r-- | src/main/ui/ui.h | 3 | ||||
-rw-r--r-- | src/main/ui/x11/ui.c | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/main/ui/ui.h b/src/main/ui/ui.h index 90d8c80..86521aa 100644 --- a/src/main/ui/ui.h +++ b/src/main/ui/ui.h @@ -21,7 +21,8 @@ #define __UI_H__ void ui_init(int w, int h); -void ui_loop(void (*draw_frame)(void)); +void ui_loop(void); void ui_set_title(const char *title); +void ui_set_loop_listener(void (*loop_event)()); #endif /* __UI_H__ */ diff --git a/src/main/ui/x11/ui.c b/src/main/ui/x11/ui.c index 6e5b2f4..1c04fd4 100644 --- a/src/main/ui/x11/ui.c +++ b/src/main/ui/x11/ui.c @@ -31,6 +31,8 @@ static Window window; static GLXContext gl_context; static int close_window = 0; +void (*on_loop_event)(); + void cleanup(void); static Display * @@ -126,7 +128,13 @@ ui_on_keypress(XEvent event) } void -ui_loop(void (*draw_frame)()) +ui_set_loop_listener(void (*loop_event)()) +{ + on_loop_event = loop_event; +} + +void +ui_loop(void) { XEvent event; while (!close_window) { @@ -137,7 +145,7 @@ ui_loop(void (*draw_frame)()) ui_on_keypress(event); } - draw_frame(); + on_loop_event(); glXSwapBuffers(display, window); } |