From 20f7a41fe900772d68ac9961cbf11cc3f1eeaa39 Mon Sep 17 00:00:00 2001 From: Stefanos Kornilios Mitsis Poiitidis Date: Thu, 7 May 2015 21:33:36 +0200 Subject: [PATCH] sched: Do not re-fire expired callbacks, use sh4_sched_remaing on sh4_sched_tick --- core/hw/sh4/sh4_sched.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/core/hw/sh4/sh4_sched.cpp b/core/hw/sh4/sh4_sched.cpp index 516bee912..c64f49bf9 100755 --- a/core/hw/sh4/sh4_sched.cpp +++ b/core/hw/sh4/sh4_sched.cpp @@ -36,11 +36,11 @@ vector list; int sh4_sched_next_id=-1; -u32 sh4_sched_remaining(int id) +u32 sh4_sched_remaining(int id, u32 reference) { - if (list[id].end!=-1) + if (list[id].end != -1) { - return list[id].end-sh4_sched_now(); + return list[id].end - reference; } else { @@ -48,6 +48,11 @@ u32 sh4_sched_remaining(int id) } } +u32 sh4_sched_remaining(int id) +{ + return sh4_sched_remaining(id, sh4_sched_now()); +} + void sh4_sched_ffts() { u32 diff=-1; @@ -150,8 +155,9 @@ void sh4_sched_tick(int cycles) { for (int i=0;i= 0 || remaining == -1); + if (remaining >= 0 && remaining <= (u32)cycles) { handle_cb(i); } }