diff options
Diffstat (limited to 'src/main/engine')
-rw-r--r-- | src/main/engine/ui/ui.h | 1 | ||||
-rw-r--r-- | src/main/engine/ui/x11/ui.c | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/main/engine/ui/ui.h b/src/main/engine/ui/ui.h index 06cd515..95604d7 100644 --- a/src/main/engine/ui/ui.h +++ b/src/main/engine/ui/ui.h @@ -23,6 +23,7 @@ void ui_init(int w, int h); void ui_loop(void); void ui_set_title(const char *title); +void ui_set_expose_listener(void (*expose_event)()); void ui_set_loop_listener(void (*event)()); void ui_set_mouse_press_listener(void (*event)()); void ui_set_generic_listener(void (*generic_event)(int type)); diff --git a/src/main/engine/ui/x11/ui.c b/src/main/engine/ui/x11/ui.c index 76adaac..412f67d 100644 --- a/src/main/engine/ui/x11/ui.c +++ b/src/main/engine/ui/x11/ui.c @@ -32,6 +32,7 @@ static GLXContext gl_context; static int close_window = 0; void (*on_loop_event)(); +void (*on_expose_event)(); void (*on_mouse_press_event)(); void (*on_generic_event)(int); @@ -113,6 +114,9 @@ static void ui_on_expose(XEvent event) { if (event.type != Expose) return; + if (on_expose_event != NULL) { + on_expose_event(); + } } static void @@ -159,6 +163,12 @@ ui_set_loop_listener(void (*loop_event)()) } void +ui_set_expose_listener(void (*expose_event)()) +{ + on_expose_event = expose_event; +} + +void ui_set_mouse_press_listener(void (*mouse_press_event)()) { on_mouse_press_event = mouse_press_event; |