Support properties in D-Bus services, based on patch by Yu Feng, fixes bug
authorJuerg Billeter <j@bitron.ch>
Thu, 8 May 2008 20:57:21 +0000 (20:57 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Thu, 8 May 2008 20:57:21 +0000 (20:57 +0000)
2008-05-08  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodeclassbinding.vala:

Support properties in D-Bus services,
based on patch by Yu Feng, fixes bug 531132

svn path=/trunk/; revision=1347

ChangeLog
gobject/valaccodeclassbinding.vala

index 607bed8..72791dc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,13 @@
 
        * gobject/valaccodeclassbinding.vala:
 
+       Support properties in D-Bus services,
+       based on patch by Yu Feng, fixes bug 531132
+
+2008-05-08  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodeclassbinding.vala:
+
        Don't export override methods to D-Bus, fixes bug 531135
 
 2008-05-08  Jürg Billeter  <j@bitron.ch>
index b8e245b..6899ba7 100644 (file)
@@ -859,6 +859,20 @@ public class Vala.CCodeClassBinding : CCodeTypesymbolBinding {
                }
                dbus_signals.append_c('"');
 
+               var dbus_props = new StringBuilder();
+               dbus_props.append_c ('"');
+               foreach (Property prop in cl.get_properties ()) {
+                       if (prop.access != SymbolAccessibility.PUBLIC) {
+                               continue;
+                       }
+
+                       dbus_props.append (dbus_iface_name);
+                       dbus_props.append ("\\0");
+                       dbus_props.append (prop.name);
+                       dbus_props.append ("\\0");
+               }
+               dbus_props.append_c ('"');
+
                var dbus_methods_decl = new CCodeDeclaration ("const DBusGMethodInfo");
                dbus_methods_decl.modifiers = CCodeModifiers.STATIC;
                dbus_methods_decl.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_methods[]".printf (cl.get_lower_case_cname ()), new CCodeConstant (dbus_methods.str)));
@@ -866,7 +880,7 @@ public class Vala.CCodeClassBinding : CCodeTypesymbolBinding {
 
                var dbus_object_info = new CCodeDeclaration ("const DBusGObjectInfo");
                dbus_object_info.modifiers = CCodeModifiers.STATIC;
-               dbus_object_info.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_object_info".printf (cl.get_lower_case_cname ()), new CCodeConstant ("{ 0, %s_dbus_methods, %d, %s, %s, \"\\0\" }".printf (cl.get_lower_case_cname (), method_count, blob.str, dbus_signals.str))));
+               dbus_object_info.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_object_info".printf (cl.get_lower_case_cname ()), new CCodeConstant ("{ 0, %s_dbus_methods, %d, %s, %s, %s }".printf (cl.get_lower_case_cname (), method_count, blob.str, dbus_signals.str, dbus_props.str))));
                codegen.class_init_fragment.append (dbus_object_info);
 
                var install_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_g_object_type_install_info"));