summaryrefslogtreecommitdiff
path: root/src/grail-api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/grail-api.c')
-rw-r--r--src/grail-api.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/grail-api.c b/src/grail-api.c
index e3b8125..cbd2da4 100644
--- a/src/grail-api.c
+++ b/src/grail-api.c
@@ -70,16 +70,16 @@ static void tp_sync(struct touch_engine *engine,
70 struct touch_frame *frame = &engine->frame; 70 struct touch_frame *frame = &engine->frame;
71 grail_mask_t filtered[DIM_EV_TYPE_BYTES]; 71 grail_mask_t filtered[DIM_EV_TYPE_BYTES];
72 int nevent = 0; 72 int nevent = 0;
73 gin_frame_begin(ge, frame->time); 73 gin_frame_begin(ge, frame);
74 gru_recognize(ge, frame); 74 gru_recognize(ge, frame);
75 gin_frame_end(ge, filtered); 75 gin_frame_end(ge, filtered, sizeof(filtered), frame);
76 if (!ge->event) { 76 if (!ge->event) {
77 evbuf_clear(&x->evbuf); 77 evbuf_clear(&x->evbuf);
78 return; 78 return;
79 } 79 }
80 while (!evbuf_empty(&x->evbuf)) { 80 while (!evbuf_empty(&x->evbuf)) {
81 evbuf_get(&x->evbuf, &ev); 81 evbuf_get(&x->evbuf, &ev);
82 if (grail_get_mask(filtered, ev.type)) 82 if (grail_mask_get(filtered, ev.type))
83 continue; 83 continue;
84 ge->event(ge, &ev); 84 ge->event(ge, &ev);
85 nevent++; 85 nevent++;
@@ -98,27 +98,27 @@ int grail_open(struct grail *ge, int fd)
98 ret = gin_init(ge); 98 ret = gin_init(ge);
99 if (ret) 99 if (ret)
100 goto freemem; 100 goto freemem;
101 ret = gru_init(ge);
102 if (ret)
103 goto freedev;
104 ret = touch_dev_open(&x->dev, fd); 101 ret = touch_dev_open(&x->dev, fd);
105 if (ret) 102 if (ret)
106 goto freegru; 103 goto freegin;
104 ret = gru_init(ge, &x->dev.caps);
105 if (ret)
106 goto freedev;
107 x->fd = fd; 107 x->fd = fd;
108 x->mutex = c_mutex; 108 x->mutex = c_mutex;
109 x->wait = c_wait; 109 x->wait = c_wait;
110 ret = pthread_create(&x->thread, NULL, grail_thread, x); 110 ret = pthread_create(&x->thread, NULL, grail_thread, x);
111 if (ret) 111 if (ret)
112 goto freetouch; 112 goto freegru;
113 ge->impl = x; 113 ge->impl = x;
114 touch_engine_init(&x->engine, tp_event, tp_sync, ge); 114 touch_engine_init(&x->engine, tp_event, tp_sync, ge);
115 touch_engine_attach(&x->engine, &x->dev); 115 touch_engine_attach(&x->engine, &x->dev);
116 return 0; 116 return 0;
117 freetouch:
118 touch_dev_close(&x->dev, fd);
119 freegru: 117 freegru:
120 gru_destroy(ge); 118 gru_destroy(ge);
121 freedev: 119 freedev:
120 touch_dev_close(&x->dev, fd);
121 freegin:
122 gin_destroy(ge); 122 gin_destroy(ge);
123 freemem: 123 freemem:
124 free(x); 124 free(x);
@@ -134,8 +134,8 @@ void grail_close(struct grail *ge, int fd)
134 pthread_cond_signal (&x->wait); 134 pthread_cond_signal (&x->wait);
135 pthread_mutex_unlock(&x->mutex); 135 pthread_mutex_unlock(&x->mutex);
136 touch_engine_detach(&x->engine, &x->dev); 136 touch_engine_detach(&x->engine, &x->dev);
137 touch_dev_close(&x->dev, fd);
138 gru_destroy(ge); 137 gru_destroy(ge);
138 touch_dev_close(&x->dev, fd);
139 gin_destroy(ge); 139 gin_destroy(ge);
140 free(ge->impl); 140 free(ge->impl);
141 ge->impl = 0; 141 ge->impl = 0;