gdbus: Don't register DBus.Properties with no properties
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 29 Nov 2012 13:19:31 +0000 (11:19 -0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 29 Nov 2012 16:40:46 +0000 (17:40 +0100)
Delay registering DBus.Properties interface until the moment there are
properties on that path. This is needed for objects that currently don't
expose any property to not export the interface.

gdbus/object.c

index 3101ca6..47116bd 100644 (file)
@@ -1213,9 +1213,6 @@ static struct generic_data *object_path_ref(DBusConnection *connection,
                                        manager_methods, manager_signals,
                                        NULL, data, NULL);
 
-       add_interface(data, DBUS_INTERFACE_PROPERTIES, properties_methods,
-                                       properties_signals, NULL, data, NULL);
-
        return data;
 }
 
@@ -1336,6 +1333,12 @@ gboolean g_dbus_register_interface(DBusConnection *connection,
                return FALSE;
        }
 
+       if (properties != NULL && !find_interface(data->interfaces,
+                                               DBUS_INTERFACE_PROPERTIES))
+               add_interface(data, DBUS_INTERFACE_PROPERTIES,
+                               properties_methods, properties_signals, NULL,
+                               data, NULL);
+
        add_interface(data, name, methods, signals, properties, user_data,
                                                                destroy);