equip os events with timestamp; re-enable leftover event feed-forward but add timeout

This commit is contained in:
Ryan Fleury
2024-01-24 12:38:19 -08:00
parent f30d9ceaa9
commit 8789e763fd
3 changed files with 10 additions and 1 deletions
+1
View File
@@ -63,6 +63,7 @@ struct OS_Event
{ {
OS_Event *next; OS_Event *next;
OS_Event *prev; OS_Event *prev;
U64 timestamp_us;
OS_Handle window; OS_Handle window;
OS_EventKind kind; OS_EventKind kind;
OS_EventFlags flags; OS_EventFlags flags;
+1
View File
@@ -111,6 +111,7 @@ w32_push_event(OS_EventKind kind, W32_Window *window)
{ {
OS_Event *result = push_array(w32_event_arena, OS_Event, 1); OS_Event *result = push_array(w32_event_arena, OS_Event, 1);
DLLPushBack(w32_event_list.first, w32_event_list.last, result); DLLPushBack(w32_event_list.first, w32_event_list.last, result);
result->timestamp_us = os_now_microseconds();
result->kind = kind; result->kind = kind;
result->window = os_window_from_w32_window(window); result->window = os_window_from_w32_window(window);
result->flags = os_get_event_flags(); result->flags = os_get_event_flags();
+8 -1
View File
@@ -315,7 +315,14 @@ update_and_render(OS_Handle repaint_window_handle, void *user_data)
{ {
arena_clear(leftover_events_arena); arena_clear(leftover_events_arena);
leftover_events = os_event_list_copy(leftover_events_arena, &events); leftover_events = os_event_list_copy(leftover_events_arena, &events);
MemoryZeroStruct(&leftover_events); for(OS_Event *ev = leftover_events.first, *next = 0; ev != 0; ev = next)
{
next = ev->next;
if(ev->timestamp_us+1000000 < os_now_microseconds())
{
os_eat_event(&leftover_events, ev);
}
}
} }
//- rjf: determine frame time, record into history //- rjf: determine frame time, record into history