Parcourir la source

Suggest use of deferred or oneshot on disconnect if the signal is locked. Closes #34443.

Juan Linietsky il y a 5 ans
Parent
commit
28599e6c20
1 fichiers modifiés avec 1 ajouts et 1 suppressions
  1. 1 1
      core/object.cpp

+ 1 - 1
core/object.cpp

@@ -1519,7 +1519,7 @@ void Object::_disconnect(const StringName &p_signal, Object *p_to_object, const
 	Signal *s = signal_map.getptr(p_signal);
 	Signal *s = signal_map.getptr(p_signal);
 	ERR_FAIL_COND_MSG(!s, "Nonexistent signal: " + p_signal + ".");
 	ERR_FAIL_COND_MSG(!s, "Nonexistent signal: " + p_signal + ".");
 
 
-	ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while emitting (locks: " + itos(s->lock) + ").");
+	ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while in emission callback. Use CONNECT_DEFERRED (to be able to safely disconnect) or CONNECT_ONESHOT (for automatic disconnection) as connection flags.");
 
 
 	Signal::Target target(p_to_object->get_instance_id(), p_to_method);
 	Signal::Target target(p_to_object->get_instance_id(), p_to_method);