From 9051f381fe14f83aada081b81339ec94ec007244 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Thu, 26 Dec 2019 18:39:10 -0600 Subject: [PATCH] Use `WeakRef` to avoid double-free of timers. --- Accessible.gd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Accessible.gd b/Accessible.gd index 0b54203..32ded9e 100644 --- a/Accessible.gd +++ b/Accessible.gd @@ -494,11 +494,11 @@ var timer func unfocused(): print_debug("Unfocused") position_in_children = 0 - timer = node.get_tree().create_timer(1) - yield(timer, "timeout") + timer = weakref(node.get_tree().create_timer(1)) + yield(timer.get_ref(), "timeout") if not node.get_focus_owner(): node.get_tree().root.warp_mouse(node.rect_global_position) - timer.unreference() + timer.get_ref().unreference() func click_focused(): if node.has_focus(): @@ -628,5 +628,5 @@ func _init(node): node.connect("tree_exiting", self, "queue_free", [], Object.CONNECT_DEFERRED) func _exit_tree(): - if timer != null: - timer.unreference() + if timer != null and timer.get_ref(): + timer.get_ref().unreference()