diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | events.c | 11 | ||||
-rw-r--r-- | events.h | 11 | ||||
-rw-r--r-- | runes.h | 1 | ||||
-rw-r--r-- | term.c | 9 | ||||
-rw-r--r-- | term.h | 1 | ||||
-rw-r--r-- | xlib.c | 23 | ||||
-rw-r--r-- | xlib.h | 5 |
8 files changed, 37 insertions, 26 deletions
@@ -1,5 +1,5 @@ OUT = runes -OBJ = runes.o display.o xlib.o term.o +OBJ = runes.o display.o xlib.o term.o events.o CFLAGS ?= -g -Wall -Wextra -Werror LDFLAGS ?= -g -Wall -Wextra -Werror diff --git a/events.c b/events.c new file mode 100644 index 0000000..4db6ce7 --- /dev/null +++ b/events.c @@ -0,0 +1,11 @@ +#include "runes.h" + +uv_loop_t *runes_loop_create(RunesTerm *t) +{ + uv_loop_t *loop; + + loop = uv_default_loop(); + runes_loop_init(t, loop); + return loop; +} + diff --git a/events.h b/events.h new file mode 100644 index 0000000..333655c --- /dev/null +++ b/events.h @@ -0,0 +1,11 @@ +#ifndef _RUNES_EVENTS_H +#define _RUNES_EVENTS_H + +struct loop_data { + uv_work_t req; + RunesTerm *t; +}; + +uv_loop_t *runes_loop_create(RunesTerm *t); + +#endif @@ -12,6 +12,7 @@ typedef struct runes_window RunesWindow; #include "term.h" #include "display.h" +#include "events.h" #include "xlib.h" @@ -17,15 +17,6 @@ RunesTerm *runes_term_create() return t; } -uv_loop_t *runes_loop_create(RunesTerm *t) -{ - uv_loop_t *loop; - - loop = uv_default_loop(); - runes_loop_init(t, loop); - return loop; -} - void runes_term_destroy(RunesTerm *t) { cairo_destroy(t->cr); @@ -12,7 +12,6 @@ struct runes_term { }; RunesTerm *runes_term_create(); -uv_loop_t *runes_loop_create(RunesTerm *t); void runes_term_destroy(RunesTerm *t); #endif @@ -2,7 +2,6 @@ #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> -#include <uv.h> #include "runes.h" @@ -62,31 +61,25 @@ cairo_surface_t *runes_surface_create(RunesWindow *w) return cairo_xlib_surface_create(w->dpy, w->w, vis, attrs.width, attrs.height); } -struct loop_data { - uv_work_t req; - XEvent e; - RunesTerm *t; -}; - static void runes_get_next_event(uv_work_t *req) { - struct loop_data *data; + struct xlib_loop_data *data; - data = (struct loop_data *)req->data; - XNextEvent(data->t->w->dpy, &data->e); + data = (struct xlib_loop_data *)req->data; + XNextEvent(data->data.t->w->dpy, &data->e); } static void runes_process_event(uv_work_t *req, int status) { - struct loop_data *data; + struct xlib_loop_data *data; XEvent *e; RunesWindow *w; UNUSED(status); - data = ((struct loop_data *)req->data); + data = ((struct xlib_loop_data *)req->data); e = &data->e; - w = data->t->w; + w = data->data.t->w; if (!XFilterEvent(e, None)) { switch (e->type) { @@ -109,7 +102,7 @@ static void runes_process_event(uv_work_t *req, int status) break; } - runes_display_glyph(data->t, buf, chars); + runes_display_glyph(data->data.t, buf, chars); free(buf); break; } @@ -130,7 +123,7 @@ void runes_loop_init(RunesTerm *t, uv_loop_t *loop) XSelectInput(t->w->dpy, t->w->w, mask|KeyPressMask); XSetICFocus(t->w->ic); - data = malloc(sizeof(struct loop_data)); + data = malloc(sizeof(struct xlib_loop_data)); ((struct loop_data *)data)->req.data = data; ((struct loop_data *)data)->t = t; @@ -10,6 +10,11 @@ struct runes_window { XIC ic; }; +struct xlib_loop_data { + struct loop_data data; + XEvent e; +}; + RunesWindow *runes_window_create(); cairo_surface_t *runes_surface_create(RunesWindow *w); void runes_loop_init(RunesTerm *t, uv_loop_t *loop); |