C#: Fix multiple awaits to same signal result in connect error

Multiple calls to the same `await ToSignal` were resulting in
"signal already connected to slot" error because the custom
callable comparer was wrong. Comparing only the signal awaiter
handle is the correct way (it's unique for the target).
This commit is contained in:
Ignacio Etcheverry 2020-12-05 00:32:53 +01:00
parent 04bef80b42
commit e2f7037824
1 changed files with 2 additions and 10 deletions

View File

@ -48,18 +48,10 @@ Error gd_mono_connect_signal_awaiter(Object *p_source, const StringName &p_signa
}
bool SignalAwaiterCallable::compare_equal(const CallableCustom *p_a, const CallableCustom *p_b) {
// Only called if both instances are of type SignalAwaiterCallable. Static cast is safe.
const SignalAwaiterCallable *a = static_cast<const SignalAwaiterCallable *>(p_a);
const SignalAwaiterCallable *b = static_cast<const SignalAwaiterCallable *>(p_b);
if (a->target_id != b->target_id) {
return false;
}
if (a->signal != b->signal) {
return false;
}
return true;
return a->awaiter_handle.handle == b->awaiter_handle.handle;
}
bool SignalAwaiterCallable::compare_less(const CallableCustom *p_a, const CallableCustom *p_b) {