summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/events.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/events.c')
-rw-r--r--apps/plugins/rockboy/events.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/apps/plugins/rockboy/events.c b/apps/plugins/rockboy/events.c
new file mode 100644
index 0000000000..5558dd86b2
--- /dev/null
+++ b/apps/plugins/rockboy/events.c
@@ -0,0 +1,61 @@
1/*
2 * events.c
3 *
4 * Event queue.
5 */
6
7
8#include "rockmacros.h"
9#include "input.h"
10
11
12char keystates[MAX_KEYS];
13int nkeysdown;
14
15#define MAX_EVENTS 32
16
17static event_t eventqueue[MAX_EVENTS];
18static int eventhead, eventpos;
19
20
21int ev_postevent(event_t *ev)
22{
23 int nextevent;
24 nextevent = (eventhead+1)%MAX_EVENTS;
25 if (nextevent == eventpos)
26 return 0;
27 eventqueue[eventhead] = *ev;
28 eventhead = nextevent;
29 return 1;
30}
31
32int ev_getevent(event_t *ev)
33{
34 if (eventpos == eventhead)
35 {
36 ev->type = EV_NONE;
37 return 0;
38 }
39 *ev = eventqueue[eventpos];
40 eventpos = (eventpos+1)%MAX_EVENTS;
41 if (ev->type == EV_PRESS)
42 {
43 keystates[ev->code] = 1;
44 nkeysdown++;
45 }
46 if (ev->type == EV_RELEASE)
47 {
48 keystates[ev->code] = 0;
49 nkeysdown--;
50 if (nkeysdown < 0) nkeysdown = 0;
51 }
52 return 1;
53}
54
55
56
57
58
59
60
61