-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathEventCache.cpp
More file actions
64 lines (48 loc) · 1.24 KB
/
EventCache.cpp
File metadata and controls
64 lines (48 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//
// Created by Cry on 2018-12-20.
//
#include "EventCache.h"
SDL_bool EventQueue::init() {
head = 0;
tail = 0;
size = 0;
return SDL_TRUE;
}
SDL_bool EventQueue::push_event(SDL_Event event) {
SDL_bool res;
if (size >= CONTROL_EVENT_QUEUE_SIZE) {
return SDL_FALSE;
}
if (is_full()) {
printf("is is_full\n");
res = SDL_FALSE;
} else {
queue[head] = event;
head = (head + 1) % CONTROL_EVENT_QUEUE_SIZE;
size++;
}
// printf("queue push_event event ,head = %d , size = %ld \n", head, size);
return res;
}
SDL_bool EventQueue::take_event(SDL_Event *event) {
if (size == 0) {
return SDL_FALSE;
}
*event = queue[tail];
tail = (tail + 1) % CONTROL_EVENT_QUEUE_SIZE;
size--;
// printf("queue take_event event ,tail = %d ,size = %ld \n", tail, size);
if (size < 0 || size > CONTROL_EVENT_QUEUE_SIZE) {
printf("when size is larger than max?? size = %ld ,max = %d \n", size, CONTROL_EVENT_QUEUE_SIZE);
abort();
}
return SDL_TRUE;
}
void EventQueue::destroy() {
}
int EventQueue::is_empty() {
return head == tail;
}
int EventQueue::is_full() {
return (head + 1) % CONTROL_EVENT_QUEUE_SIZE == tail;
}