Prevent sleeps in key handling from blocking SSinput (#26761)

* Prevent sleeps in Move from blocking SSinput

* Switch to watifor = FALSE

* Move SHOULD_NOT_SLEEP

* Whoops, that one's a redefine, too.
This commit is contained in:
Charlie Nolan
2024-09-29 03:54:31 -07:00
committed by GitHub
parent 882b1e4a0b
commit d6529434ff
2 changed files with 4 additions and 0 deletions
+2
View File
@@ -22,6 +22,8 @@ SUBSYSTEM_DEF(input)
return "P: [length(processing)]"
/datum/controller/subsystem/input/fire(resumed = FALSE)
// Sleeps in input handling are bad, because they can stall the entire subsystem indefinitely, breaking most movement. key_loop has SHOULD_NOT_SLEEP(TRUE), which helps, but it doesn't catch everything, so we also waitfor=FALSE here, as using INVOKE_ASYNC here is very unperformant.
set waitfor = FALSE
var/list/to_cull
for(var/client/C in processing)
if(processing[C] + AUTO_CULL_TIME < world.time)