Fix running `core.step` when receiving an event while not waiting

When `time_to_wake` was <= 0, so when a coroutine needed to be executed 
as soon as possible, we didn't check for events, so we only performed a 
`core.step` with the blink timer.
This resulted in jerky reactions to input.
This commit is contained in:
Guldoman 2023-11-12 00:48:34 +01:00 committed by Takase
parent a0ef2906a1
commit dd75e676bc
2 changed files with 4 additions and 4 deletions

View File

@ -1461,7 +1461,7 @@ function core.run()
local cursor_time_to_wake = dt + 1 / config.fps local cursor_time_to_wake = dt + 1 / config.fps
next_step = now + cursor_time_to_wake next_step = now + cursor_time_to_wake
end end
if time_to_wake > 0 and system.wait_event(math.min(next_step - now, time_to_wake)) then if system.wait_event(math.min(next_step - now, time_to_wake)) then
next_step = nil -- if we've recevied an event, perform a step next_step = nil -- if we've recevied an event, perform a step
end end
else else

View File

@ -61,10 +61,10 @@ function system.poll_event() end
--- ---
---Wait until an event is triggered. ---Wait until an event is triggered.
--- ---
---@param timeout number Amount of seconds, also supports fractions ---@param timeout? number Amount of seconds, also supports fractions
---of a second, eg: 0.01 ---of a second, eg: 0.01. If not provided, waits forever.
--- ---
---@return boolean status True on success or false if there was an error. ---@return boolean status True on success or false if there was an error or if no event was received.
function system.wait_event(timeout) end function system.wait_event(timeout) end
--- ---