diff --git a/ChangeLog b/ChangeLog index 2d168cdd3..b9c37b94c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-07-12 Mike Kestner + + * generator/ObjectBase.cs: add CallByName overload with ownership. + * generator/Parameters.cs: support owned by callee parameters. + Adapted from a patch by Maarten Bosmans. [Fixes #513680] + 2009-07-10 Christian Hoff * pango/Pango.metadata: Mark "ink_rect" and "logical_rect" parameters of Get*Extends diff --git a/generator/ObjectBase.cs b/generator/ObjectBase.cs index 7c5149ebe..809f0e894 100644 --- a/generator/ObjectBase.cs +++ b/generator/ObjectBase.cs @@ -154,7 +154,12 @@ namespace GtkSharp.Generation { return base.IsNodeNameHandled (name); } } - + + public virtual string CallByName (string var, bool owned) + { + return String.Format ("{0} == null ? IntPtr.Zero : ({0} as GLib.Object).{1}", var, owned ? "OwnedHandle" : "Handle"); + } + public override string FromNative (string var, bool owned) { return "GLib.Object.GetObject(" + var + (owned ? ", true" : "") + ") as " + QualifiedName; diff --git a/generator/Parameters.cs b/generator/Parameters.cs index 3ebafbad7..d0e1951c5 100644 --- a/generator/Parameters.cs +++ b/generator/Parameters.cs @@ -262,8 +262,10 @@ namespace GtkSharp.Generation { call_parm += CallName; } else if (gen is IManualMarshaler) call_parm = "native_" + CallName; + else if (gen is ObjectBase) + call_parm = (gen as ObjectBase).CallByName (CallName, Owned); else - call_parm = SymbolTable.Table.CallByName(CType, CallName); + call_parm = gen.CallByName (CallName); return call_parm; }