From cb1e7a9bd514b346b6891298b249d3594c1213b1 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 14 Feb 2016 18:37:08 +0200 Subject: [PATCH] Do not generate new uae_Signal() if previous is still queued. It can cause deadlock if buffer fills completely. --- sana2.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sana2.cpp b/sana2.cpp index 555d7d25..f3383ce9 100644 --- a/sana2.cpp +++ b/sana2.cpp @@ -330,11 +330,19 @@ static int openfail (TrapContext *ctx, uaecptr ioreq, int error) } static uaecptr uaenet_worker; +static int uaenet_signal_state; + +static void uaenet_signal_done(int cmd) +{ + uaenet_signal_state = 1; +} static void uaenet_int(void) { - if (uaenet_worker) - uae_Signal(uaenet_worker, 0x100); + if (uaenet_worker && uaenet_signal_state) { + uaenet_signal_state = 0; + uae_Signal_with_Func(uaenet_worker, 0x100, uaenet_signal_done); + } } static uae_u32 REGPARAM2 uaenet_int_handler (TrapContext *ctx); @@ -1886,6 +1894,7 @@ void netdev_start_threads (void) void netdev_reset (void) { + uaenet_signal_state = 1; if (!currprefs.sana2) return; dev_reset (); -- 2.47.3