mock: levels.txt automatisch generieren
[hackover2013-badge-firmware.git] / mock / mock / event.cc
1 #include "event.h"
2
3 #include <glibmm/threads.h>
4 #include <queue>
5
6 namespace {
7 Glib::Threads::Mutex badge_event_mutex;
8 Glib::Threads::Cond badge_event_condition;
9 std::queue<badge_event_t> badge_event_queue;
10 uint8_t volatile badge_event_input_state = 0;
11 }
12
13 uint8_t badge_event_current_input_state(void) {
14 Glib::Threads::Mutex::Lock lock(badge_event_mutex);
15 return badge_event_input_state;
16 }
17
18 void badge_event_push(badge_event_t e) {
19 Glib::Threads::Mutex::Lock lock(badge_event_mutex);
20
21 badge_event_queue.push(e);
22
23 if(badge_event_type(e) == BADGE_EVENT_USER_INPUT) {
24 badge_event_input_state = badge_event_new_input_state(e);
25 }
26
27 badge_event_condition.signal();
28 }
29
30 badge_event_t badge_event_wait(void) {
31 Glib::Threads::Mutex::Lock lock(badge_event_mutex);
32
33 while(badge_event_queue.empty()) {
34 badge_event_condition.wait(badge_event_mutex);
35 }
36
37 badge_event_t result = badge_event_queue.front();
38 badge_event_queue.pop();
39
40 return result;
41 }
This page took 0.051385 seconds and 5 git commands to generate.