From 9b9342d89f0c687258f64ae6a98facecbe52a6ac Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 3 Oct 2021 17:02:48 +0300 Subject: [PATCH] If event buffer becomes fill, execute next event immediately instead of dropping newest event. --- events.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/events.cpp b/events.cpp index abe5c930..dbbc0c37 100644 --- a/events.cpp +++ b/events.cpp @@ -365,7 +365,24 @@ void event2_newevent_xx (int no, evt t, uae_u32 data, evfunc2 func) no = ev2_misc; if (no == next) { write_log (_T("out of event2's!\n")); - return; + // execute most recent event immediately + evt mintime = ~0L; + int minevent = -1; + evt ct = get_cycles(); + for (int i = 0; i < ev2_max; i++) { + if (eventtab2[i].active) { + evt eventtime = eventtab2[i].evtime - ct; + if (eventtime < mintime) { + mintime = eventtime; + minevent = i; + } + } + } + if (minevent >= 0) { + eventtab2[minevent].active = false; + eventtab2[minevent].handler(eventtab2[minevent].data); + } + continue; } } next = no; -- 2.47.3