if (parent == NULL)
return;
+ /* Find root data */
+ while (parent->parent)
+ parent = parent->parent;
+
signal = dbus_message_new_signal(parent->path,
DBUS_INTERFACE_OBJECT_MANAGER,
"InterfacesAdded");
if (parent == NULL)
return;
+ /* Find root data */
+ while (parent->parent)
+ parent = parent->parent;
+
signal = dbus_message_new_signal(parent->path,
DBUS_INTERFACE_OBJECT_MANAGER,
"InterfacesRemoved");
&child->path);
append_interfaces(child, &entry);
dbus_message_iter_close_container(array, &entry);
+
+ g_slist_foreach(child->objects, append_object, user_data);
}
static DBusMessage *get_objects(DBusConnection *connection,
add_interface(data, DBUS_INTERFACE_INTROSPECTABLE, introspect_methods,
NULL, NULL, data, NULL);
- add_interface(data, DBUS_INTERFACE_OBJECT_MANAGER, manager_methods,
- manager_signals, NULL, data, NULL);
+ /* Only root path export ObjectManager interface */
+ if (data->parent == NULL)
+ add_interface(data, DBUS_INTERFACE_OBJECT_MANAGER,
+ manager_methods, manager_signals,
+ NULL, data, NULL);
add_interface(data, DBUS_INTERFACE_PROPERTIES, properties_methods,
properties_signals, NULL, data, NULL);