diff --git a/Source/Libs/GLibSharp/Object.cs b/Source/Libs/GLibSharp/Object.cs index 3ba77e946..57bb28cc4 100644 --- a/Source/Libs/GLibSharp/Object.cs +++ b/Source/Libs/GLibSharp/Object.cs @@ -73,6 +73,16 @@ namespace GLib { tref.Dispose (); else tref.QueueUnref (); + + // Free all internal signals, else the garbage collector is not + // able to free the object. + if (signals != null) + { + foreach (var sig in signals.Keys) + signals[sig].Free (); + } + + signals = null; } public static bool WarnOnFinalize { get; set; }