Let's be correct on this.
}
static bool manager_check_idle(void *userdata) {
- Manager *m = userdata;
+ Manager *m = ASSERT_PTR(userdata);
- return hashmap_isempty(m->transfers);
+ return hashmap_isempty(m->transfers) &&
+ hashmap_isempty(m->polkit_registry);
}
static void manager_parse_env(Manager *m) {
return 0;
}
+static bool context_check_idle(void *userdata) {
+ Context *c = ASSERT_PTR(userdata);
+
+ return hashmap_isempty(c->polkit_registry);
+}
+
static int run(int argc, char *argv[]) {
_cleanup_(context_clear) Context context = {};
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
if (r < 0)
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
- r = bus_event_loop_with_idle(event, bus, "org.freedesktop.locale1", DEFAULT_EXIT_USEC, NULL, NULL);
+ r = bus_event_loop_with_idle(
+ event,
+ bus,
+ "org.freedesktop.locale1",
+ DEFAULT_EXIT_USEC,
+ context_check_idle,
+ &context);
if (r < 0)
return log_error_errno(r, "Failed to run event loop: %m");
}
static bool check_idle(void *userdata) {
- Manager *m = userdata;
+ Manager *m = ASSERT_PTR(userdata);
if (m->operations)
return false;
if (varlink_server_current_connections(m->varlink_machine_server) > 0)
return false;
+ if (!hashmap_isempty(m->polkit_registry))
+ return false;
+
manager_gc(m, true);
return hashmap_isempty(m->machines);
}
static bool check_idle(void *userdata) {
- Manager *m = userdata;
+ Manager *m = ASSERT_PTR(userdata);
- return !m->operations;
+ return !m->operations &&
+ hashmap_isempty(m->polkit_registry);
}
static int run(int argc, char *argv[]) {
return 0;
}
+static bool context_check_idle(void *userdata) {
+ Context *c = ASSERT_PTR(userdata);
+
+ return hashmap_isempty(c->polkit_registry);
+}
+
static int run(int argc, char *argv[]) {
_cleanup_(context_clear) Context context = {};
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
if (r < 0)
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
- r = bus_event_loop_with_idle(event, bus, "org.freedesktop.timedate1", DEFAULT_EXIT_USEC, NULL, NULL);
+ r = bus_event_loop_with_idle(
+ event,
+ bus,
+ "org.freedesktop.timedate1",
+ DEFAULT_EXIT_USEC,
+ context_check_idle,
+ &context);
if (r < 0)
return log_error_errno(r, "Failed to run event loop: %m");