]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Really fix recursive misc events.
authorToni Wilen <twilen@winuae.net>
Sun, 1 Jun 2025 09:38:36 +0000 (12:38 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 1 Jun 2025 09:38:36 +0000 (12:38 +0300)
events.cpp

index c7384a0f5df90fddcaedfbaf3a0a471613e62911..5878c30e90e847f267fbab7cb3ff1706a8e22b85 100644 (file)
@@ -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) {