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 6263eba..a641b88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 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:
 
        Extend namespaces section, based on patch by Phil Housley
index 6899ba7..9bb0c3e 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;