From f8331a18855b7da4029589fce3fefe7f15a50f6a Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 1 Jun 2025 12:38:36 +0300 Subject: [PATCH] Really fix recursive misc events. --- events.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/events.cpp b/events.cpp index c7384a0f..5878c30e 100644 --- a/events.cpp +++ b/events.cpp @@ -343,12 +343,17 @@ void do_cycles_slow(int cycles_to_add) } static int event2idx; +static int event2cnt; +static int event2restart; void MISC_handler(void) { evt_t mintime; evt_t ct = get_cycles(); + if (event2cnt) { + event2restart++; + } eventtab[ev_misc].active = 0; mintime = EVT_MAX; int idx2 = event2idx; @@ -358,7 +363,14 @@ void MISC_handler(void) if (e->active) { if (e->evtime == ct) { e->active = false; + event2cnt++; e->handler(e->data); + event2cnt--; + if (event2restart > 0) { + event2restart--; + mintime = EVT_MAX; + i = 0; + } } else { evt_t eventtime = e->evtime - ct; if (eventtime < mintime) { -- 2.47.3