static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec);
static void bus_detach_io_events(sd_bus *b);
-static void bus_detach_inotify_event(sd_bus *b);
static thread_local sd_bus *default_system_bus = NULL;
static thread_local sd_bus *default_user_bus = NULL;
void bus_close_inotify_fd(sd_bus *b) {
assert(b);
- bus_detach_inotify_event(b);
+ b->inotify_event_source = sd_event_source_disable_unref(b->inotify_event_source);
b->inotify_fd = safe_close(b->inotify_fd);
b->inotify_watches = mfree(b->inotify_watches);
static void bus_detach_io_events(sd_bus *bus) {
assert(bus);
- if (bus->input_io_event_source) {
- sd_event_source_set_enabled(bus->input_io_event_source, SD_EVENT_OFF);
- bus->input_io_event_source = sd_event_source_unref(bus->input_io_event_source);
- }
-
- if (bus->output_io_event_source) {
- sd_event_source_set_enabled(bus->output_io_event_source, SD_EVENT_OFF);
- bus->output_io_event_source = sd_event_source_unref(bus->output_io_event_source);
- }
+ bus->input_io_event_source = sd_event_source_disable_unref(bus->input_io_event_source);
+ bus->output_io_event_source = sd_event_source_disable_unref(bus->output_io_event_source);
}
int bus_attach_inotify_event(sd_bus *bus) {
return 0;
}
-static void bus_detach_inotify_event(sd_bus *bus) {
- assert(bus);
-
- if (bus->inotify_event_source) {
- sd_event_source_set_enabled(bus->inotify_event_source, SD_EVENT_OFF);
- bus->inotify_event_source = sd_event_source_unref(bus->inotify_event_source);
- }
-}
-
_public_ int sd_bus_attach_event(sd_bus *bus, sd_event *event, int priority) {
int r;
return 0;
bus_detach_io_events(bus);
- bus_detach_inotify_event(bus);
-
- if (bus->time_event_source) {
- sd_event_source_set_enabled(bus->time_event_source, SD_EVENT_OFF);
- bus->time_event_source = sd_event_source_unref(bus->time_event_source);
- }
-
- if (bus->quit_event_source) {
- sd_event_source_set_enabled(bus->quit_event_source, SD_EVENT_OFF);
- bus->quit_event_source = sd_event_source_unref(bus->quit_event_source);
- }
+ bus->inotify_event_source = sd_event_source_disable_unref(bus->inotify_event_source);
+ bus->time_event_source = sd_event_source_disable_unref(bus->time_event_source);
+ bus->quit_event_source = sd_event_source_disable_unref(bus->quit_event_source);
bus->event = sd_event_unref(bus->event);
return 1;
assert_return(s, -EINVAL);
- LIST_FOREACH(sockets, ss, s->sockets) {
-
- if (!ss->event_source)
- continue;
-
- (void) sd_event_source_set_enabled(ss->event_source, SD_EVENT_OFF);
- ss->event_source = sd_event_source_unref(ss->event_source);
- }
+ LIST_FOREACH(sockets, ss, s->sockets)
+ ss->event_source = sd_event_source_disable_unref(ss->event_source);
sd_event_unref(s->event);
return 0;