mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 08:03:43 +01:00
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:
@@ -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)
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
return
|
||||
|
||||
/datum/proc/key_loop(client/C)
|
||||
// Sleeps in input handling are bad, because they can stall the entire subsystem indefinitely, breaking most movement. The subsystem sets waitfor=FALSE, which works around this, but we'd rather avoid the sleeps in the first place.
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
return
|
||||
|
||||
/client/key_loop()
|
||||
|
||||
Reference in New Issue
Block a user