aboutsummaryrefslogtreecommitdiffstats
path: root/src/loop.c
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2016-05-01 21:58:34 -0400
committerJesse Luehrs <doy@tozt.net>2016-05-01 21:58:34 -0400
commita2b9833253748ca113cc101c60867fd7e1dca64d (patch)
tree22ff693d49dbc04a48ee631d87a93c8102c377a3 /src/loop.c
parent0f0f511ecaadcfd5758b454d96ddc57d6b2bc92b (diff)
downloadrunes-a2b9833253748ca113cc101c60867fd7e1dca64d.tar.gz
runes-a2b9833253748ca113cc101c60867fd7e1dca64d.zip
no reason to expose the loop_data struct anymore either
Diffstat (limited to 'src/loop.c')
-rw-r--r--src/loop.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/loop.c b/src/loop.c
index 1f5ef62..0a45439 100644
--- a/src/loop.c
+++ b/src/loop.c
@@ -2,6 +2,14 @@
#include "runes.h"
+struct runes_loop_data {
+ uv_work_t req;
+ RunesLoop *loop;
+ RunesTerm *t;
+ void (*work_cb)(RunesTerm*);
+ int (*after_work_cb)(RunesTerm*);
+};
+
struct runes_loop_timer_data {
RunesTerm *t;
void (*cb)(RunesTerm*);
@@ -26,16 +34,16 @@ void runes_loop_start_work(RunesLoop *loop, RunesTerm *t,
void (*work_cb)(RunesTerm*),
int (*after_work_cb)(RunesTerm*))
{
- void *data;
+ struct runes_loop_data *data;
- data = malloc(sizeof(RunesLoopData));
- ((RunesLoopData *)data)->req.data = data;
- ((RunesLoopData *)data)->loop = loop;
- ((RunesLoopData *)data)->t = t;
- ((RunesLoopData *)data)->work_cb = work_cb;
- ((RunesLoopData *)data)->after_work_cb = after_work_cb;
+ data = malloc(sizeof(struct runes_loop_data));
+ data->req.data = data;
+ data->loop = loop;
+ data->t = t;
+ data->work_cb = work_cb;
+ data->after_work_cb = after_work_cb;
- uv_queue_work(loop->loop, data, runes_loop_do_work,
+ uv_queue_work(loop->loop, (void*)data, runes_loop_do_work,
runes_loop_do_after_work);
}
@@ -61,7 +69,7 @@ void runes_loop_cleanup(RunesLoop *loop)
static void runes_loop_do_work(uv_work_t *req)
{
- RunesLoopData *data = req->data;
+ struct runes_loop_data *data = req->data;
RunesTerm *t = data->t;
data->work_cb(t);
@@ -69,7 +77,7 @@ static void runes_loop_do_work(uv_work_t *req)
static void runes_loop_do_after_work(uv_work_t *req, int status)
{
- RunesLoopData *data = req->data;
+ struct runes_loop_data *data = req->data;
RunesLoop *loop = data->loop;
RunesTerm *t = data->t;
int should_loop = 0;