From 8f255a0f2a80e1bd5c4a7790f86378657f2740a9 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 28 Jul 2020 02:35:19 +0200 Subject: [PATCH] Fixed a stray return; in the OPL code and a fatal flaw in my own timer API where timers were not being disabled if period is 0.0. --- src/sound/snd_opl.c | 2 -- src/timer.c | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/sound/snd_opl.c b/src/sound/snd_opl.c index 488acdc35..bab1a8c3f 100644 --- a/src/sound/snd_opl.c +++ b/src/sound/snd_opl.c @@ -175,8 +175,6 @@ opl_write(opl_t *dev, uint16_t port, uint8_t val) if (!(dev->flags & FLAG_OPL3)) dev->port &= 0x00ff; - - return; } } diff --git a/src/timer.c b/src/timer.c index 85264a62a..0920076d3 100644 --- a/src/timer.c +++ b/src/timer.c @@ -233,6 +233,8 @@ timer_advance_ex(pc_timer_t *timer, int start) } else { if (timer->period > 0.0) timer_do_period(timer, (uint64_t) (timer->period * ((double) TIMER_USEC)), start); + else + timer_disable(timer); timer->period = 0.0; timer->flags &= ~TIMER_SPLIT; } @@ -256,5 +258,8 @@ timer_on_auto(pc_timer_t *timer, double period) if (!timer_inited || (timer == NULL)) return; - timer_on(timer, period, (timer->period == 0.0)); + if (period > 0.0) + timer_on(timer, period, (timer->period == 0.0)); + else + timer_stop(timer); }