aboutsummaryrefslogtreecommitdiff
path: root/engines/gargoyle/events.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gargoyle/events.cpp')
-rw-r--r--engines/gargoyle/events.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/engines/gargoyle/events.cpp b/engines/gargoyle/events.cpp
index a4dadcbaef..6fcf6340c8 100644
--- a/engines/gargoyle/events.cpp
+++ b/engines/gargoyle/events.cpp
@@ -28,8 +28,36 @@ void Events::getEvent(event_t *event, bool polled) {
// TODO
}
-void Events::eventStore(EvType type, Window *win, uint32 val1, uint32 val2) {
- // TODO
+void Events::store(EvType type, Window *win, uint32 val1, uint32 val2) {
+ Event ev(type, win, val1, val2);
+
+ switch (type) {
+ case evtype_Arrange:
+ case evtype_Redraw:
+ case evtype_SoundNotify:
+ case evtype_Timer:
+ _eventsPolled.push(ev);
+ break;
+
+ default:
+ _eventsLogged.push(ev);
+ break;
+ }
+}
+
+void Events::dispatchEvent(Event &ev, bool polled) {
+ Event dispatch;
+
+ if (!polled) {
+ dispatch = _eventsLogged.retrieve();
+ if (dispatch)
+ dispatch = _eventsPolled.retrieve();
+ } else {
+ dispatch = _eventsPolled.retrieve();
+ }
+
+ if (dispatch)
+ ev = dispatch;
}
} // End of namespace Gargoyle