- Don't copy delayed events in D_ProcessEvents(), instead store the current pointer.

This commit is contained in:
Mitchell Richters 2022-10-22 13:09:53 +11:00
parent 479616a80f
commit 3f9a2a2103

View file

@ -67,7 +67,7 @@ CVAR(Float, m_sensitivity_y, 2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
void D_ProcessEvents (void) void D_ProcessEvents (void)
{ {
FixedBitArray<NUM_KEYS> keywasdown; FixedBitArray<NUM_KEYS> keywasdown;
TArray<event_t> delayedevents; TArray<event_t*> delayedevents;
keywasdown.Zero(); keywasdown.Zero();
while (eventtail != eventhead) while (eventtail != eventhead)
@ -77,7 +77,7 @@ void D_ProcessEvents (void)
if (ev->type == EV_KeyUp && keywasdown[ev->data1]) if (ev->type == EV_KeyUp && keywasdown[ev->data1])
{ {
delayedevents.Push(*ev); delayedevents.Push(ev);
continue; continue;
} }
@ -97,9 +97,9 @@ void D_ProcessEvents (void)
if (sysCallbacks.G_Responder(ev) && ev->type == EV_KeyDown) keywasdown.Set(ev->data1); if (sysCallbacks.G_Responder(ev) && ev->type == EV_KeyDown) keywasdown.Set(ev->data1);
} }
for (auto& ev: delayedevents) for (auto ev: delayedevents)
{ {
D_PostEvent(&ev); D_PostEvent(ev);
} }
} }