From: Toni Wilen Date: Sun, 3 Oct 2021 14:02:48 +0000 (+0300) Subject: If event buffer becomes fill, execute next event immediately instead of dropping... X-Git-Tag: 4900~55 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=9b9342d89f0c687258f64ae6a98facecbe52a6ac;p=francis%2Fwinuae.git If event buffer becomes fill, execute next event immediately instead of dropping newest event. --- 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;