aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--events.c11
-rw-r--r--events.h11
-rw-r--r--runes.h1
-rw-r--r--term.c9
-rw-r--r--term.h1
-rw-r--r--xlib.c23
-rw-r--r--xlib.h5
8 files changed, 37 insertions, 26 deletions
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 <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;
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);