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 *prev;
U64 timestamp_us;
OS_Handle window;
OS_EventKind kind;
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);
DLLPushBack(w32_event_list.first, w32_event_list.last, result);
result->timestamp_us = os_now_microseconds();
result->kind = kind;
result->window = os_window_from_w32_window(window);
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);
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