From 8bd95029811ebe254a7fdff8202287f64cab0461 Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Mon, 3 Mar 2014 15:34:54 -0800 Subject: [PATCH] GC fixes, debug verb for toggling. --- code/controllers/garbage.dm | 21 ++++++++++++++++++++- code/modules/admin/admin_verbs.dm | 3 ++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 51b71b2c177..0ea8b19ac0b 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -38,6 +38,7 @@ var/global/list/uncollectable_vars=list( var/list/queue=list() var/list/destroyed=list() var/waiting=0 + var/del_everything=0 var/turf/trashbin=null New() @@ -46,6 +47,9 @@ var/global/list/uncollectable_vars=list( proc/AddTrash(var/atom/movable/A) if(!A) return + if(del_everything) + del(A) + return A.loc=trashbin queue.Add(A) waiting++ @@ -53,11 +57,16 @@ var/global/list/uncollectable_vars=list( proc/Pop() var/atom/movable/A = queue[1] if(!A) return + if(del_everything) + del(A) + return if(!istype(A,/atom/movable)) testing("GC given a [A.type].") del(A) return for(var/vname in A.vars) + if(!issaved(A.vars[vname])) + continue if(vname in uncollectable_vars) continue //testing("Unsetting [vname] in [A.type]!") @@ -95,4 +104,14 @@ var/global/list/uncollectable_vars=list( return // Let our friend know they're about to get fucked up. A.Destroy() - garbage.AddTrash(A) \ No newline at end of file + garbage.AddTrash(A) + +/client/proc/qdel_toggle() + set name = "Toggle qdel Behavior" + set desc = "Toggle qdel usage between normal and force del()." + set category = "Debug" + + garbage.del_everything = !garbage.del_everything + world << "GC: qdel turned [garbage.del_everything?"off":"on"]." + log_admin("[key_name(usr)] turned qdel [garbage.del_everything?"off":"on"].") + message_admins("\blue [key_name(usr)] turned qdel [garbage.del_everything?"off":"on"].", 1) \ No newline at end of file diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 418d5ec64fe..ac4a1a7c55e 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -138,7 +138,8 @@ var/list/admin_verbs_debug = list( /client/proc/restart_controller, /client/proc/enable_debug_verbs, /client/proc/callproc, - /client/proc/toggledebuglogs + /client/proc/toggledebuglogs, + /client/proc/qdel_toggle // /vg/ ) var/list/admin_verbs_possess = list( /proc/possess,