1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Fix Container sorting not working when overriding _sort_children in gdscript

Remove _sort_children from script bindings:
_sort_children is an internal method which shouldn't be exposed to scripts.

Added support for non-bound methods in MessageQueue:
So we can use deferred calls without exposing internal methods to scripts.

Added debug checks in CallableCustomMethodPointer:
Adding method pointer callables to the message queue was causing crashes
in case an object was destroyed and the same memory was allocated for
another one. The new object had a valid object id but the call was erroneous.
Release will be fixed later, along with Variant which has the same problem and
is also fixed for debug only.
This commit is contained in:
PouleyKetchoupp
2020-05-01 18:41:41 +02:00
parent d999071edf
commit 3ad694018f
4 changed files with 51 additions and 5 deletions

View File

@@ -155,6 +155,21 @@ Error MessageQueue::push_callable(const Callable &p_callable, const Variant **p_
return OK;
}
Error MessageQueue::push_callable(const Callable &p_callable, VARIANT_ARG_DECLARE) {
VARIANT_ARGPTRS;
int argc = 0;
for (int i = 0; i < VARIANT_ARG_MAX; i++) {
if (argptr[i]->get_type() == Variant::NIL) {
break;
}
argc++;
}
return push_callable(p_callable, argptr, argc);
}
void MessageQueue::statistics() {
Map<StringName, int> set_count;
Map<int, int> notify_count;