+static int wait_for_jobs(DBusConnection *bus, Set *s) {
+ int r;
+
+ assert(bus);
+ assert(s);
+
+ if (!dbus_connection_add_filter(bus, wait_filter, s, NULL)) {
+ log_error("Failed to add filter.");
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ while (!set_isempty(s) &&
+ dbus_connection_read_write_dispatch(bus, -1))
+ ;
+
+ r = 0;
+
+finish:
+ /* This is slightly dirty, since we don't undo the filter registration. */
+
+ return r;
+}
+