Kill processing_objects (#3398)

This commit is contained in:
Lohikar
2017-09-09 15:22:58 -05:00
committed by GitHub
parent 16d33365c2
commit 8f4b4effae
41 changed files with 89 additions and 130 deletions

View File

@@ -54,7 +54,6 @@
#define SS_PRIORITY_MODIFIER 18
#define SS_PRIORITY_ARRIVALS 16 // Centcomm arrivals shuttle auto-launch. Usually asleep.
#define SS_PRIORITY_PROCESSING 15 // Generic datum processor. Replaces objects processor.
#define SS_PRIORITY_OBJECTS 15 // processing_objects processing.
#define SS_PRIORITY_EXPLOSIVES 13 // Explosion processor. Doesn't have much effect on explosion tick-checking.
#define SS_PRIORITY_DISPOSALS 12 // Disposal holder movement.
#define SS_PRIORITY_WIRELESS 12 // Handles pairing of wireless devices. Usually will be asleep.

View File

@@ -1,35 +0,0 @@
/datum/controller/subsystem/object
name = "Objects"
priority = SS_PRIORITY_OBJECTS
flags = SS_POST_FIRE_TIMING | SS_BACKGROUND | SS_NO_INIT
var/list/processing
var/tmp/list/queue = list()
/datum/controller/subsystem/object/New()
LAZYINITLIST(processing_objects)
processing = processing_objects // Ref for debugging.
/datum/controller/subsystem/object/fire(resumed = FALSE)
if (!resumed)
queue = processing_objects.Copy()
while (queue.len)
var/datum/O = queue[queue.len]
queue.len--
if (QDELETED(O))
log_debug("SSobjects: QDELETED object [DEBUG_REF(O)] found in processing queue!")
processing_objects -= O
if (MC_TICK_CHECK)
return
continue
O.process()
if (MC_TICK_CHECK)
return
/datum/controller/subsystem/object/stat_entry()
..("[processing_objects.len] objects")

View File

@@ -28,7 +28,7 @@
checkReagents()
/obj/effect/effect/foam/proc/post()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
sleep(30)
if(metal)
var/obj/structure/foamedmetal/M = new /obj/structure/foamedmetal(src.loc)

View File

@@ -74,7 +74,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = "cigoff"
name = "burnt match"
desc = "A match. This one has seen better days."
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
//////////////////
//FINE SMOKABLES//
@@ -144,7 +144,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/turf/T = get_turf(src)
T.visible_message(flavor_text)
set_light(2, 0.25, "#E38F46")
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0)
var/turf/T = get_turf(src)
@@ -160,7 +160,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
M.update_inv_wear_mask(0)
M.update_inv_l_hand(0)
M.update_inv_r_hand(1)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
else
new /obj/effect/decal/cleanable/ash(T)
@@ -174,7 +174,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
M.update_inv_wear_mask(0)
M.update_inv_l_hand(0)
M.update_inv_r_hand(1)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
/obj/item/clothing/mask/smokable/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
@@ -339,7 +339,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = icon_on
var/turf/T = get_turf(src)
T.visible_message(flavor_text)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
if(ismob(loc))
var/mob/living/M = loc
M.update_inv_wear_mask(0)
@@ -352,7 +352,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lit = 0
icon_state = icon_off
item_state = icon_off
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
else if (smoketime)
var/turf/location = get_turf(user)
user.visible_message("<span class='notice'>[user] empties out [src].</span>", "<span class='notice'>You empty out [src].</span>")
@@ -462,7 +462,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.visible_message("<span class='notice'>After a few attempts, [user] manages to light the [src], they however burn their finger in the process.</span>")
set_light(2)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
lit = 0
icon_state = "[base_state]"
@@ -474,7 +474,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.visible_message("<span class='notice'>[user] quietly shuts off the [src].</span>")
set_light(0)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
else
return ..()
return
@@ -507,5 +507,5 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "[base_state]"
item_state = "[base_state]"
set_light(0)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return

View File

@@ -72,7 +72,7 @@
playsound(get_turf(src), 'sound/weapons/empty.ogg', 25, 1)
return
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
active = 1
src.icon_state = "shield1"
stop_modifier()
@@ -91,7 +91,7 @@
playsound(src, 'sound/effects/phasein.ogg', 50, 1)
stop_modifier()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
/obj/item/weapon/cloaking_device/emp_act(severity)
deactivate()

View File

@@ -35,7 +35,7 @@
/obj/item/weapon/flamethrower/process()
if(!lit)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return null
var/turf/location = loc
if(istype(location, /mob/))
@@ -145,7 +145,7 @@
if(!status) return
lit = !lit
if(lit)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
if(href_list["amount"])
throw_amount = throw_amount + text2num(href_list["amount"])
throw_amount = max(50, min(5000, throw_amount))

View File

@@ -52,7 +52,7 @@
var/obj/item/clothing/mask/smokable/cigarette/cig = W
if (cig.lit == 1)
src.visible_message("[user] crushes [cig] in \the [src], putting it out.")
processing_objects.Remove(cig)
STOP_PROCESSING(SSprocessing, cig)
var/obj/item/butt = new cig.type_butt(src)
cig.transfer_fingerprints_to(butt)
qdel(cig)

View File

@@ -57,11 +57,11 @@
if(applies_material_colour)
color = material.icon_colour
if(material.products_need_process())
processing_objects |= src
START_PROCESSING(SSprocessing, src)
update_force()
/obj/item/weapon/material/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/weapon/material/apply_hit_effect()

View File

@@ -306,12 +306,12 @@
active = 1
armor_penetration = 20
/obj/item/weapon/melee/energy/blade/New()
processing_objects |= src
..()
/obj/item/weapon/melee/energy/blade/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/melee/energy/blade/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/weapon/melee/energy/blade/deactivate(mob/living/user)

View File

@@ -722,7 +722,7 @@
W.lit = 1
W.damtype = "burn"
W.icon_state = "match_lit"
processing_objects.Add(W)
START_PROCESSING(SSprocessing, W)
W.update_icon()
return

View File

@@ -172,9 +172,9 @@
/obj/effect/energy_net/teleport
countdown = 60
/obj/effect/energy_net/New()
..()
processing_objects |= src
/obj/effect/energy_net/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/effect/energy_net/Destroy()
@@ -184,7 +184,7 @@
M.captured = 0
M << "You are free of the net!"
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/effect/energy_net/proc/healthcheck()

View File

@@ -23,8 +23,8 @@
var/icon_species_in_hand = 0//If 1, we will use the species tag even for rendering this item in the left/right hand.
var/equip_slot = 0
/obj/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()

View File

@@ -8,12 +8,12 @@
anchored = 1
var/progress = 0
/obj/structure/alien/egg/New()
..()
processing_objects += src
/obj/structure/alien/egg/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/structure/alien/egg/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/structure/alien/egg/CanUseTopic(var/mob/user)
@@ -32,7 +32,7 @@
for(var/mob/M in dead_mob_list)
if(istype(M,/mob/dead) && M.client && M.client.prefs && (MODE_XENOMORPH in M.client.prefs.be_special_role))
M << "[ghost_follow_link(src, M)] <span class='notice'>An alien is ready to hatch! (<a href='byond://?src=\ref[src];spawn=1'>spawn</a>)</span>"
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
update_icon()
/obj/structure/alien/egg/update_icon()

View File

@@ -5,12 +5,12 @@
health = 100
layer = 3.1
/obj/structure/alien/node/New()
..()
processing_objects += src
/obj/structure/alien/node/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/structure/alien/node/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/structure/alien/node/process()

View File

@@ -77,7 +77,7 @@
if (timer <= 0)
dump_contents()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
/obj/structure/closet/statue/dump_contents()

View File

@@ -36,11 +36,11 @@
else
opacity = 1
if(material.products_need_process())
processing_objects |= src
START_PROCESSING(SSprocessing, src)
update_nearby_tiles(need_rebuild=1)
/obj/structure/simple_door/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
update_nearby_tiles()
return ..()

View File

@@ -7,7 +7,6 @@
// Items that ask to be called every cycle.
var/global/datum/datacore/data_core = null
var/global/list/all_areas = list()
var/global/list/processing_objects = list()
var/global/list/processing_power_items = list()
var/global/list/med_hud_users = list() // List of all entities using a medical HUD.
var/global/list/sec_hud_users = list() // List of all entities using a security HUD.

View File

@@ -111,7 +111,7 @@
process()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return

View File

@@ -241,7 +241,7 @@
tmr.time=5
tmr.secured = 1
tmr.holder = src
processing_objects.Add(tmr)
START_PROCESSING(SSprocessing, tmr)
a_left = tmr
a_right = ign
secured = 1

View File

@@ -29,11 +29,11 @@
toggle_secure()
secured = !secured
if(secured)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
on = 0
if(first) qdel(first)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
update_icon()
return secured

View File

@@ -30,11 +30,11 @@
toggle_secure()
secured = !secured
if(secured)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
scanning = 0
timing = 0
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
update_icon()
return secured

View File

@@ -163,13 +163,13 @@
process()
if(!deadman)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
var/mob/M = src.loc
if(!M || !ismob(M))
if(prob(5))
signal()
deadman = 0
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
else if(prob(5))
M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!")
return
@@ -179,7 +179,7 @@
set name = "Threaten to push the button!"
set desc = "BOOOOM!"
deadman = 1
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
log_and_message_admins("is threatening to trigger a signaler deadman's switch")
usr.visible_message("<span class='warning'>[usr] moves their finger over [src]'s signal button...</span>")

View File

@@ -28,10 +28,10 @@
toggle_secure()
secured = !secured
if(secured)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
timing = 0
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
update_icon()
return secured

View File

@@ -79,7 +79,7 @@
/obj/item/clothing/head/cakehat/process()
if(!onfire)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return
var/turf/location = src.loc
@@ -98,7 +98,7 @@
src.damtype = "fire"
src.icon_state = "cake1"
src.item_state = "cake1"
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
src.force = null
src.damtype = "brute"

View File

@@ -100,12 +100,10 @@
wearer = user
wearer << "<span class='Notice'>You struggle into the [src]. It feels hot, heavy and uncomfortable</span>"
if(!(src in processing_objects))
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
else
wearer = null
..(user, slot)
#define BOMBSUIT_THERMAL 0.27
@@ -116,7 +114,7 @@
suit_temp -= 0.5
if (suit_temp < T20C)
suit_temp = T20C
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return
else
var/amount = BOMBSUIT_THERMAL
@@ -150,7 +148,7 @@
/obj/item/clothing/suit/bomb_suit/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()

View File

@@ -34,7 +34,7 @@
update_name()
/obj/item/weapon/reagent_containers/glass/rag/Destroy()
processing_objects -= src //so we don't continue turning to ash while gc'd
STOP_PROCESSING(SSprocessing, src) //so we don't continue turning to ash while gc'd
return ..()
/obj/item/weapon/reagent_containers/glass/rag/attack_self(mob/user as mob)
@@ -178,14 +178,14 @@
qdel(src)
return
processing_objects += src
START_PROCESSING(SSprocessing, src)
set_light(2, null, "#E38F46")
on_fire = 1
update_name()
update_icon()
/obj/item/weapon/reagent_containers/glass/rag/proc/extinguish()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
set_light(0)
on_fire = 0
@@ -212,7 +212,7 @@
location.hotspot_expose(700, 5)
if(burn_time <= 0)
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
new /obj/effect/decal/cleanable/ash(location)
qdel(src)
return

View File

@@ -19,12 +19,12 @@
on = !on
if(on)
set_light(range, 2, "#7700dd")
processing_objects |= src
START_PROCESSING(SSprocessing, src)
icon_state = "uv_on"
else
set_light(0)
clear_last_scan()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
icon_state = "uv_off"
/obj/item/device/uv_light/proc/clear_last_scan()

View File

@@ -28,7 +28,7 @@
for (var/dir in cardinal)
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
if(src.output) break
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/machinery/mineral/mint/machinery_process()
if ( src.input)

View File

@@ -241,7 +241,7 @@
New()
..()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
process()
var/mob/dead/observer/ghost

View File

@@ -297,4 +297,3 @@
qdel(src)
else
STOP_PROCESSING(SSprocessing, src)
processing_objects.Remove(src)

View File

@@ -24,7 +24,7 @@
if (H.z == map_z)
nav_control = H
break
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/effect/map/ship/relaymove(mob/user, direction)
accelerate(direction)

View File

@@ -941,7 +941,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
over.layer = MOB_LAYER + 0.1
/obj/structure/noose/Destroy()
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/structure/noose/post_buckle_mob(mob/living/M)
@@ -1040,7 +1040,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
/obj/structure/noose/process(mob/living/carbon/human/M, mob/user)
if(!buckled_mob)
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
buckled_mob.pixel_x = initial(buckled_mob.pixel_x)
pixel_x = initial(pixel_x)
return

View File

@@ -159,7 +159,7 @@
M << "<span class='warning'>You feel a wave of heat wash over you.</span>"
M.apply_effect(300, IRRADIATE)
//crit_fail = 1 //break the gun so it stops recharging
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
update_icon()
return 0

View File

@@ -16,11 +16,11 @@
/*
/obj/item/weapon/gun/energy/temperature/New()
..()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/gun/energy/temperature/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
..()

View File

@@ -166,7 +166,7 @@ obj/aiming_overlay/proc/update_aiming_deferred()
playsound(get_turf(owner), 'sound/weapons/TargetOn.ogg', 50,1)
forceMove(get_turf(target))
processing_objects |= src
START_PROCESSING(SSprocessing, src)
aiming_at.aimed |= src
toggle_active(1)
@@ -222,7 +222,7 @@ obj/aiming_overlay/proc/update_aiming_deferred()
aiming_with = null
loc = null
processing_objects -= src
STOP_PROCESSING(SSprocessing, src)
/obj/aiming_overlay/proc/target_moved()
update_aiming()

View File

@@ -31,10 +31,10 @@
var/datum/reagent/R = chemical_reagents_list[T]
reagent_names += R.name
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/reagent_containers/borghypo/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+

View File

@@ -66,11 +66,11 @@
/obj/item/weapon/vampiric/New()
..()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
listening_objects += src
/obj/item/weapon/vampiric/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
listening_objects -= src
return ..()
@@ -159,11 +159,11 @@
/obj/effect/decal/cleanable/blood/splatter/animated/New()
..()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
loc_last_process = src.loc
/obj/effect/decal/cleanable/blood/splatter/animated/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/effect/decal/cleanable/blood/splatter/animated/process()
@@ -193,10 +193,10 @@
density = 1
/obj/effect/shadow_wight/New()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/effect/shadow_wight/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/effect/shadow_wight/process()
@@ -221,7 +221,7 @@
M.sleeping = max(M.sleeping,rand(5,10))
src.loc = null
else
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
/obj/effect/shadow_wight/Bump(var/atom/obstacle)
obstacle << "<span class='warning'>You feel a chill run down your spine!</span>"

View File

@@ -20,11 +20,11 @@
/datum/talking_atom/proc/init()
if(holder_atom)
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/datum/talking_atom/process()
if(!holder_atom)
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
else if(heard_words.len >= 1 && world.time > last_talk_time + talk_interval && prob(talk_chance))
SaySomething()

View File

@@ -35,7 +35,7 @@
/obj/item/weapon/anodevice/New()
..()
processing_objects.Add(src)
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/anobattery))
@@ -191,7 +191,7 @@
icon_state = "anodev[round(p,25)]"
/obj/item/weapon/anodevice/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/weapon/anodevice/attack(mob/living/M as mob, mob/living/user as mob, def_zone)

View File

@@ -12,12 +12,12 @@
var/scan_ticks = 0
var/obj/item/device/radio/target_radio
/obj/item/device/beacon_locator/New()
..()
processing_objects.Add(src)
/obj/item/device/beacon_locator/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/item/device/beacon_locator/Destroy()
processing_objects.Remove(src)
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/device/beacon_locator/process()
@@ -39,7 +39,7 @@
if(prob(scan_ticks * 10))
spawn(0)
set background = 1
if(processing_objects.Find(src))
if(isprocessing)
//scan radios in the world to try and find one
var/cur_dist = 999
for(var/obj/item/device/radio/beacon/R in world)