summaryrefslogtreecommitdiffstats
path: root/modules/mono/signal_awaiter_utils.h
diff options
context:
space:
mode:
authorIgnacio Etcheverry <ignalfonsore@gmail.com>2019-12-11 17:08:40 +0100
committerIgnacio Etcheverry <ignalfonsore@gmail.com>2020-03-17 21:51:05 +0100
commit0b814ea78d6b065e8e0785155207bd80b3d845c8 (patch)
tree6513402706d55505ec57cf88c97db5633ffabb9a /modules/mono/signal_awaiter_utils.h
parent989a223c5a6d6ba5b1b098be8983888cb49b2525 (diff)
downloadredot-engine-0b814ea78d6b065e8e0785155207bd80b3d845c8.tar.gz
Mono/C#: Optimize the way we store GC handles for scripts
Don't store GC handles for C# script instances and instance bindings as 'Ref<MonoGCHandle>'; store the raw data instead. Initially this was not possible as we needed to store a Variant, but this had not been the case for a looong time yet the stored type was never updated.
Diffstat (limited to 'modules/mono/signal_awaiter_utils.h')
-rw-r--r--modules/mono/signal_awaiter_utils.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/modules/mono/signal_awaiter_utils.h b/modules/mono/signal_awaiter_utils.h
index 868d33e335..c550315a23 100644
--- a/modules/mono/signal_awaiter_utils.h
+++ b/modules/mono/signal_awaiter_utils.h
@@ -40,7 +40,7 @@ Error gd_mono_connect_signal_awaiter(Object *p_source, const StringName &p_signa
class SignalAwaiterCallable : public CallableCustom {
ObjectID target_id;
- Ref<MonoGCHandle> awaiter_handle;
+ MonoGCHandleData awaiter_handle;
StringName signal;
public:
@@ -64,6 +64,7 @@ public:
void call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const override;
SignalAwaiterCallable(Object *p_target, MonoObject *p_awaiter, const StringName &p_signal);
+ ~SignalAwaiterCallable();
};
class EventSignalCallable : public CallableCustom {