- to_flush = event_tree;
- init_events();
- while (to_flush->head) {
- event = to_flush->head->data;
- event->handler(event->data);
- avl_delete(to_flush, event);
+ if(!event_tree->tail)
+ return;
+
+ event = event_tree->tail->data;
+ if(event->time < now)
+ return;
+
+ diff = 1 + event->time - now;
+
+ for(node = event_tree->head; node; node = node->next) {
+ event = node->data;
+ event->time -= diff;