]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support owned delegate parameters in delegates.
authorLuca Bruno <lucabru@src.gnome.org>
Sun, 9 Jan 2011 12:57:59 +0000 (13:57 +0100)
committerJürg Billeter <j@bitron.ch>
Sun, 9 Jan 2011 13:05:47 +0000 (14:05 +0100)
Fixes bug 639059.

codegen/valaccodedelegatemodule.vala

index 5e978f083db1ae00abc92b15238860db54c9e785..fcf8bcc1f88b41b7764bb0ed86d3e0ed42da8f40 100644 (file)
@@ -73,6 +73,10 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                                if (param_d.has_target) {
                                        cparam = new CCodeParameter (get_delegate_target_cname (get_variable_cname (param.name)), "void*");
                                        cfundecl.add_parameter (cparam);
+                                       if (deleg_type.value_owned) {
+                                               cparam = new CCodeParameter (get_delegate_target_destroy_notify_cname (get_variable_cname (param.name)), "GDestroyNotify*");
+                                               cfundecl.add_parameter (cparam);
+                                       }
                                }
                        }
                }
@@ -331,6 +335,10 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                                if (deleg_type.delegate_symbol.has_target) {
                                        var ctarget = new CCodeIdentifier (get_delegate_target_cname (d_params.get (i).name));
                                        carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), ctarget);
+                                       if (deleg_type.value_owned) {
+                                               var ctarget_destroy_notify = new CCodeIdentifier (get_delegate_target_destroy_notify_cname (d_params.get (i).name));
+                                               carg_map.set (get_param_pos (m.cdelegate_target_parameter_position + 0.01), ctarget_destroy_notify);
+                                       }
                                }
                        }