diff --git a/include/kernel/kernel.hpp b/include/kernel/kernel.hpp index 23764dc0..99687ee1 100644 --- a/include/kernel/kernel.hpp +++ b/include/kernel/kernel.hpp @@ -172,6 +172,13 @@ public: void requireReschedule() { needReschedule = true; } + void evalReschedule() { + if (needReschedule) { + needReschedule = false; + rescheduleThreads(); + } + } + Handle makeObject(KernelObjectType type) { if (handleCounter > KernelHandles::Max) [[unlikely]] { Helpers::panic("Hlep we somehow created enough kernel objects to overflow this thing"); diff --git a/src/core/kernel/kernel.cpp b/src/core/kernel/kernel.cpp index a8cf40a1..c48c8f18 100644 --- a/src/core/kernel/kernel.cpp +++ b/src/core/kernel/kernel.cpp @@ -62,10 +62,7 @@ void Kernel::serviceSVC(u32 svc) { default: Helpers::panic("Unimplemented svc: %X @ %08X", svc, regs[15]); break; } - if (needReschedule) { - needReschedule = false; - rescheduleThreads(); - } + evalReschedule(); } void Kernel::setVersion(u8 major, u8 minor) { diff --git a/src/emulator.cpp b/src/emulator.cpp index fd5efe6b..2e7cd521 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -357,6 +357,8 @@ void Emulator::run() { hid.updateInputs(cpu.getTicks()); } + // TODO: Should this be uncommented? + // kernel.evalReschedule(); // Update inputs in the HID module SDL_GL_SwapWindow(window);