diff --git a/ChangeLog b/ChangeLog index d5b94ca76..5ae67f86b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-01-26 Mike Kestner + + * glib/Value.cs : add a private debugging DllImport for ref_counts + since the glue is there already. g_value_get_object returns an + unowned ref, so don't pretend like we own it. Make get_Val work for + GObject subclasses. [Fixes #71125] + 2005-01-26 Mike Kestner * gtk/NodeView.cs : always use CreateNativeObject. diff --git a/glib/Value.cs b/glib/Value.cs index 1dfba822b..2c6573e81 100755 --- a/glib/Value.cs +++ b/glib/Value.cs @@ -143,6 +143,9 @@ namespace GLib { } + [DllImport("glibsharpglue")] + static extern int gtksharp_object_get_ref_count (IntPtr obj); + [DllImport("libgobject-2.0-0.dll")] static extern void g_value_set_object (ref Value val, IntPtr data); @@ -292,7 +295,7 @@ namespace GLib { public static explicit operator GLib.Object (Value val) { - return GLib.Object.GetObject(g_value_get_object (ref val), true); + return GLib.Object.GetObject(g_value_get_object (ref val), false); } public static explicit operator GLib.UnwrappedObject (Value val) @@ -380,7 +383,7 @@ namespace GLib { return (char) this; else if (type == GType.UInt) return (uint) this; - else if (type == GType.Object) + else if (g_type_is_a (type.Val, GType.Object.Val)) return (GLib.Object) this; else throw new Exception ("Unknown type");