]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
support methods throwing exceptions in D-Bus services, patch by Ali Sabil
authorJuerg Billeter <j@bitron.ch>
Mon, 12 May 2008 21:15:24 +0000 (21:15 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Mon, 12 May 2008 21:15:24 +0000 (21:15 +0000)
2008-05-12  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodeclassbinding.vala: support methods throwing
exceptions in D-Bus services, patch by Ali Sabil

svn path=/trunk/; revision=1381

ChangeLog
gobject/valaccodeclassbinding.vala

index 6263eba4716c1e0ceea74dbea045cf5250485ca5..a641b8852c707415e22a1ebb4fc64c659762c8f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-12  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodeclassbinding.vala: support methods throwing
+       exceptions in D-Bus services, patch by Ali Sabil
+
 2008-05-12  Jürg Billeter  <j@bitron.ch>
 
        * doc/vala/namespaces.xml:
index 6899ba7099b0d105501f42b0a88f2a91c23b1466..9bb0c3e262e739b65590a24e98d0deb554e4222b 100644 (file)
@@ -769,15 +769,27 @@ public class Vala.CCodeClassBinding : CCodeTypesymbolBinding {
                                continue;
                        }
 
+                       Gee.Collection<FormalParameter> parameters;
+
+                       if (m.get_error_domains ().size > 0) {
+                               parameters = new Gee.ArrayList<FormalParameter> ();
+                               foreach (FormalParameter param in m.get_parameters ()) {
+                                       parameters.add (param);
+                               }
+                               parameters.add (new FormalParameter ("error", codegen.gerror_type));
+                       } else {
+                               parameters = m.get_parameters ();
+                       }
+
                        dbus_methods.append ("{ (GCallback) ");
                        dbus_methods.append (m.get_cname ());
                        dbus_methods.append (", ");
-                       dbus_methods.append (codegen.get_marshaller_function (m.get_parameters (), m.return_type));
+                       dbus_methods.append (codegen.get_marshaller_function (parameters, m.return_type));
                        dbus_methods.append (", ");
                        dbus_methods.append (blob_len.to_string ());
                        dbus_methods.append (" },\n");
 
-                       codegen.generate_marshaller (m.get_parameters (), m.return_type);
+                       codegen.generate_marshaller (parameters, m.return_type);
 
                        long start = blob.len;