mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
bus: automatically flush bus queue when we exit the event loop
This way, we do not have to call it manually
This commit is contained in:
parent
b75b4db0af
commit
abc5fe7250
@ -665,7 +665,6 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
sd_bus_flush(bus);
|
||||
r = 0;
|
||||
|
||||
finish:
|
||||
|
@ -244,6 +244,7 @@ struct sd_bus {
|
||||
sd_event_source *input_io_event_source;
|
||||
sd_event_source *output_io_event_source;
|
||||
sd_event_source *time_event_source;
|
||||
sd_event_source *quit_event_source;
|
||||
sd_event *event;
|
||||
};
|
||||
|
||||
|
@ -83,7 +83,7 @@ int bus_event_loop_with_idle(sd_event *e, sd_bus *bus, const char *name, usec_t
|
||||
if (r == SD_EVENT_FINISHED)
|
||||
break;
|
||||
|
||||
r = sd_event_run(e, exiting ? (uint64_t) -1 : DEFAULT_EXIT_USEC);
|
||||
r = sd_event_run(e, exiting ? (uint64_t) -1 : timeout);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -2208,6 +2208,16 @@ static int prepare_callback(sd_event_source *s, void *userdata) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int quit_callback(sd_event_source *event, void *userdata) {
|
||||
sd_bus *bus = userdata;
|
||||
|
||||
assert(event);
|
||||
|
||||
sd_bus_flush(bus);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sd_bus_attach_event(sd_bus *bus, sd_event *event, int priority) {
|
||||
int r;
|
||||
|
||||
@ -2251,6 +2261,10 @@ int sd_bus_attach_event(sd_bus *bus, sd_event *event, int priority) {
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
r = sd_event_add_quit(event, quit_callback, bus, &bus->quit_event_source);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
@ -2271,6 +2285,9 @@ int sd_bus_detach_event(sd_bus *bus) {
|
||||
if (bus->time_event_source)
|
||||
bus->time_event_source = sd_event_source_unref(bus->time_event_source);
|
||||
|
||||
if (bus->quit_event_source)
|
||||
bus->quit_event_source = sd_event_source_unref(bus->quit_event_source);
|
||||
|
||||
if (bus->event)
|
||||
bus->event = sd_event_unref(bus->event);
|
||||
|
||||
|
@ -880,7 +880,6 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
sd_bus_flush(bus);
|
||||
r = 0;
|
||||
|
||||
finish:
|
||||
|
Loading…
Reference in New Issue
Block a user