X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=dbus-unit.c;h=e3e1be12ade2be09393e0198ca85ac57eda43096;hb=92aa6f363360cbb4e300648e5cbdb6fe4cce1b57;hp=ccaaef99a2931db04348814274d29b3f7ae92cec;hpb=701cc384c283206a29b21e4e7302e5cf5f2d9433;p=elogind.git diff --git a/dbus-unit.c b/dbus-unit.c index ccaaef99a..e3e1be12a 100644 --- a/dbus-unit.c +++ b/dbus-unit.c @@ -44,6 +44,25 @@ int bus_unit_append_names(Manager *m, DBusMessageIter *i, const char *property, return 0; } +int bus_unit_append_dependencies(Manager *m, DBusMessageIter *i, const char *property, void *data) { + Unit *u; + Iterator j; + DBusMessageIter sub; + Set *s = data; + + if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "s", &sub)) + return -ENOMEM; + + SET_FOREACH(u, s, j) + if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &u->meta.id)) + return -ENOMEM; + + if (!dbus_message_iter_close_container(i, &sub)) + return -ENOMEM; + + return 0; +} + int bus_unit_append_description(Manager *m, DBusMessageIter *i, const char *property, void *data) { Unit *u = data; const char *d; @@ -348,8 +367,10 @@ void bus_unit_send_change_signal(Unit *u) { LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta); u->meta.in_dbus_queue = false; - if (set_isempty(u->meta.manager->subscribed)) + if (set_isempty(u->meta.manager->subscribed)) { + u->meta.sent_dbus_new_signal = true; return; + } if (!(p = unit_dbus_path(u))) goto oom;