From 53fe74fd6fb3026de151edf07bafae0077a0a6e5 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Sun, 27 Nov 2016 18:09:45 -0500 Subject: [PATCH] Tgui cleanup --- code/controllers/subsystem/tgui.dm | 4 ++++ code/modules/tgui/subsystem.dm | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index 01240d4ef74..1119c791947 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -18,6 +18,10 @@ var/datum/subsystem/tgui/SStgui NEW_SS_GLOBAL(SStgui) +/datum/subsystem/tgui/Destroy() + close_all_uis() + return ..() + /datum/subsystem/tgui/stat_entry() ..("P:[processing_uis.len]") diff --git a/code/modules/tgui/subsystem.dm b/code/modules/tgui/subsystem.dm index c623e3c39ae..7de55141580 100644 --- a/code/modules/tgui/subsystem.dm +++ b/code/modules/tgui/subsystem.dm @@ -99,6 +99,23 @@ close_count++ // Count each UI we close. return close_count + /** + * private + * + * Close *ALL* UIs + * + * return int The number of UIs closed. + **/ +/datum/subsystem/tgui/proc/close_all_uis() + var/close_count = 0 + for(var/src_object_key in open_uis) + for(var/ui_key in open_uis[src_object_key]) + for(var/datum/tgui/ui in open_uis[src_object_key][ui_key]) + if(ui && ui.src_object && ui.user && ui.src_object.ui_host()) // Check the UI is valid. + ui.close() // Close the UI. + close_count++ // Count each UI we close. + return close_count + /** * private *