Fix Mono and GDNative builds after changes to ObjectID
Issues caused by cf8c679a23
.
The Mono change is actually a bugfix (used the int instead of ObjectID
by mistake).
The GDNative change is a temporary revert until a more exhaustive approach
is taken to make 'godot_int' 64-bit, is confirmed wanted by GDNative users.
This commit is contained in:
parent
cf8c679a23
commit
09534e2922
|
@ -171,7 +171,7 @@ bool GDAPI godot_is_instance_valid(const godot_object *p_object) {
|
||||||
}
|
}
|
||||||
|
|
||||||
godot_object GDAPI *godot_instance_from_id(godot_int p_instance_id) {
|
godot_object GDAPI *godot_instance_from_id(godot_int p_instance_id) {
|
||||||
return (godot_object *)ObjectDB::get_instance(ObjectID(p_instance_id));
|
return (godot_object *)ObjectDB::get_instance(ObjectID((uint64_t)p_instance_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
void *godot_get_class_tag(const godot_string_name *p_class) {
|
void *godot_get_class_tag(const godot_string_name *p_class) {
|
||||||
|
|
|
@ -127,7 +127,7 @@ typedef bool godot_bool;
|
||||||
|
|
||||||
/////// int
|
/////// int
|
||||||
|
|
||||||
typedef int64_t godot_int;
|
typedef int godot_int;
|
||||||
|
|
||||||
/////// real
|
/////// real
|
||||||
|
|
||||||
|
|
|
@ -162,11 +162,11 @@ void CSharpLanguage::finish() {
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
for (Map<ObjectID, int>::Element *E = unsafe_object_references.front(); E; E = E->next()) {
|
for (Map<ObjectID, int>::Element *E = unsafe_object_references.front(); E; E = E->next()) {
|
||||||
const ObjectID &id = E->get();
|
const ObjectID &id = E->key();
|
||||||
Object *obj = ObjectDB::get_instance(id);
|
Object *obj = ObjectDB::get_instance(id);
|
||||||
|
|
||||||
if (obj) {
|
if (obj) {
|
||||||
ERR_PRINT("Leaked unsafe reference to object: " + obj->get_class() + ":" + itos(id));
|
ERR_PRINT("Leaked unsafe reference to object: " + obj->to_string());
|
||||||
} else {
|
} else {
|
||||||
ERR_PRINT("Leaked unsafe reference to deleted object: " + itos(id));
|
ERR_PRINT("Leaked unsafe reference to deleted object: " + itos(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ Error connect_signal_awaiter(Object *p_source, const String &p_signal, Object *p
|
||||||
Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
|
Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
ERR_FAIL_COND_V_MSG(conn_target_id && !ObjectDB::get_instance(conn_target_id), Variant(),
|
ERR_FAIL_COND_V_MSG(conn_target_id.is_valid() && !ObjectDB::get_instance(conn_target_id), Variant(),
|
||||||
"Resumed after await, but class instance is gone.");
|
"Resumed after await, but class instance is gone.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -116,12 +116,7 @@ void SignalAwaiterHandle::_bind_methods() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SignalAwaiterHandle::SignalAwaiterHandle(MonoObject *p_managed) :
|
SignalAwaiterHandle::SignalAwaiterHandle(MonoObject *p_managed) :
|
||||||
MonoGCHandle(MonoGCHandle::new_strong_handle(p_managed), STRONG_HANDLE) {
|
MonoGCHandle(MonoGCHandle::new_strong_handle(p_managed), STRONG_HANDLE) {}
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
|
||||||
conn_target_id = 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
SignalAwaiterHandle::~SignalAwaiterHandle() {
|
SignalAwaiterHandle::~SignalAwaiterHandle() {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue