From 2cd91c8bfcf68b845f6e5c9ae96a31fdc2b127dd Mon Sep 17 00:00:00 2001 From: Leshana Date: Sun, 11 Jun 2017 22:10:15 -0400 Subject: [PATCH] Fix /datum/scheduled_task was unable to be GC'd and was deleted. In addition to fixing the problem, it makes sense. The observer pattern is overkill for an object type we own; doing it directly in Destroy() is more efficient. --- code/controllers/Processes/scheduler.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/controllers/Processes/scheduler.dm b/code/controllers/Processes/scheduler.dm index fb9f85d7c4..6031f2f4fe 100644 --- a/code/controllers/Processes/scheduler.dm +++ b/code/controllers/Processes/scheduler.dm @@ -46,12 +46,9 @@ /datum/controller/process/scheduler/proc/schedule(var/datum/scheduled_task/st) scheduled_tasks += st - destroyed_event.register(st, src, /datum/controller/process/scheduler/proc/unschedule) /datum/controller/process/scheduler/proc/unschedule(var/datum/scheduled_task/st) - if(st in scheduled_tasks) - scheduled_tasks -= st - destroyed_event.unregister(st, src) + scheduled_tasks -= st /********** * Helpers * @@ -102,6 +99,7 @@ task_after_process_args += src /datum/scheduled_task/Destroy() + scheduler.unschedule(src) procedure = null arguments.Cut() task_after_process = null