From 63af312fd093dc31f4d3875841127ebc68066dbc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 5 Apr 2014 21:28:52 -0400 Subject: split out event stuff --- Makefile | 2 +- events.c | 11 +++++++++++ events.h | 11 +++++++++++ runes.h | 1 + term.c | 9 --------- term.h | 1 - xlib.c | 23 ++++++++--------------- xlib.h | 5 +++++ 8 files changed, 37 insertions(+), 26 deletions(-) create mode 100644 events.c create mode 100644 events.h diff --git a/Makefile b/Makefile index 93bbf3f..8bc189e 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/runes.h b/runes.h index b73d3d6..a3962f6 100644 --- a/runes.h +++ b/runes.h @@ -12,6 +12,7 @@ typedef struct runes_window RunesWindow; #include "term.h" #include "display.h" +#include "events.h" #include "xlib.h" diff --git a/term.c b/term.c index d3345d9..7231882 100644 --- a/term.c +++ b/term.c @@ -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); diff --git a/term.h b/term.h index 52d5836..04ea3c2 100644 --- a/term.h +++ b/term.h @@ -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 diff --git a/xlib.c b/xlib.c index 904ee4f..baf0a93 100644 --- a/xlib.c +++ b/xlib.c @@ -2,7 +2,6 @@ #include #include #include -#include #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; diff --git a/xlib.h b/xlib.h index 809645e..5aaa1ca 100644 --- a/xlib.h +++ b/xlib.h @@ -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); -- cgit v1.2.3-54-g00ecf