Fix overlay subsystem holding on to excessive amounts of icons. (#58378)

* Fix overlay subsystem holding on to excessive amounts of icons.

The use of the icon file reference should be ok because they aren't ref counted anyways,

* Rename icon

* Makes the shit actually work

* Removes caching all together.

* fix compile errors

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
Kyle Spier-Swenson
2021-04-14 01:46:06 -04:00
committed by GitHub
co-authored by Mothblocks
parent 5d2fe9b662
commit e40574786b
+5 -25
View File
@@ -7,12 +7,8 @@ SUBSYSTEM_DEF(overlays)
var/list/queue
var/list/stats
var/list/overlay_icon_state_caches
var/list/overlay_icon_cache
/datum/controller/subsystem/overlays/PreInit()
overlay_icon_state_caches = list()
overlay_icon_cache = list()
queue = list()
stats = list()
@@ -32,8 +28,6 @@ SUBSYSTEM_DEF(overlays)
/datum/controller/subsystem/overlays/Recover()
overlay_icon_state_caches = SSoverlays.overlay_icon_state_caches
overlay_icon_cache = SSoverlays.overlay_icon_cache
queue = SSoverlays.queue
@@ -70,31 +64,17 @@ SUBSYSTEM_DEF(overlays)
queue.Cut(1,count+1)
count = 0
/proc/iconstate2appearance(icon, iconstate)
var/static/image/stringbro = new()
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
var/list/cached_icon = icon_states_cache[icon]
if (cached_icon)
var/cached_appearance = cached_icon["[iconstate]"]
if (cached_appearance)
return cached_appearance
stringbro.icon = icon
stringbro.icon_state = iconstate
if (!cached_icon) //not using the macro to save an associated lookup
cached_icon = list()
icon_states_cache[icon] = cached_icon
var/cached_appearance = stringbro.appearance
cached_icon["[iconstate]"] = cached_appearance
return cached_appearance
return stringbro.appearance
/proc/icon2appearance(icon)
var/static/image/iconbro = new()
var/list/icon_cache = SSoverlays.overlay_icon_cache
. = icon_cache[icon]
if (!.)
iconbro.icon = icon
. = iconbro.appearance
icon_cache[icon] = .
iconbro.icon = icon
return iconbro.appearance
/atom/proc/build_appearance_list(old_overlays)
var/static/image/appearance_bro = new()