diff --git a/code/controllers/subsystem/asset_loading.dm b/code/controllers/subsystem/asset_loading.dm index ecdf406894a..1129ae94c15 100644 --- a/code/controllers/subsystem/asset_loading.dm +++ b/code/controllers/subsystem/asset_loading.dm @@ -13,12 +13,14 @@ SUBSYSTEM_DEF(asset_loading) while(length(generate_queue)) var/datum/asset/to_load = generate_queue[generate_queue.len] + last_queue_len = length(generate_queue) + generate_queue.len-- + to_load.queued_generation() if(MC_TICK_CHECK) return - last_queue_len = length(generate_queue) - generate_queue.len-- + // We just emptied the queue if(last_queue_len && !length(generate_queue)) // Clean up cached icons, freeing memory. diff --git a/code/modules/asset_cache/spritesheet/batched/batched_spritesheet.dm b/code/modules/asset_cache/spritesheet/batched/batched_spritesheet.dm index a5a636327f5..d537b20c7b1 100644 --- a/code/modules/asset_cache/spritesheet/batched/batched_spritesheet.dm +++ b/code/modules/asset_cache/spritesheet/batched/batched_spritesheet.dm @@ -232,7 +232,7 @@ CRASH("Error during spritesheet generation for [name]: [data["error"]]") /datum/asset/spritesheet_batched/queued_generation() - realize_spritesheets(yield = TRUE) + INVOKE_ASYNC(src, PROC_REF(realize_spritesheets), TRUE) // The proc is called inside a subsystem and waits with an UNTIL /datum/asset/spritesheet_batched/ensure_ready() if(!fully_generated)