chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: fix exit-on-idle for driverd
[elogind.git]
/
src
/
bus-driverd
/
bus-driverd.c
diff --git
a/src/bus-driverd/bus-driverd.c
b/src/bus-driverd/bus-driverd.c
index d4126a99b6a7d9cafe333c33335af9e8fa2f99b9..46ee3492bade04611a22666a4e1b427410d3ecc3 100644
(file)
--- a/
src/bus-driverd/bus-driverd.c
+++ b/
src/bus-driverd/bus-driverd.c
@@
-772,6
+772,13
@@
static int connect_bus(Context *c) {
return 0;
}
return 0;
}
+static bool check_idle(void *userdata) {
+ Context *c = userdata;
+ assert(c);
+
+ return hashmap_isempty(c->clients);
+}
+
int main(int argc, char *argv[]) {
Context context = {};
Client *c;
int main(int argc, char *argv[]) {
Context context = {};
Client *c;
@@
-799,7
+806,7
@@
int main(int argc, char *argv[]) {
if (r < 0)
goto finish;
if (r < 0)
goto finish;
- r = bus_event_loop_with_idle(context.event, context.bus, "org.freedesktop.DBus", DEFAULT_EXIT_USEC);
+ r = bus_event_loop_with_idle(context.event, context.bus, "org.freedesktop.DBus", DEFAULT_EXIT_USEC
, check_idle, &context
);
if (r < 0) {
log_error("Failed to run event loop: %s", strerror(-r));
goto finish;
if (r < 0) {
log_error("Failed to run event loop: %s", strerror(-r));
goto finish;