summaryrefslogtreecommitdiff
path: root/config/dbus-core.c
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2007-08-01 01:09:07 +0300
committerDaniel Stone <daniel@fooishbar.org>2007-08-01 01:53:31 +0300
commitaa75b3481724834da2f855d8dd2ff36074bd5706 (patch)
treee1d24208a012df35a542aa128236f4a274f59980 /config/dbus-core.c
parent4d238c5c67461ed747aa6c021d1532734f4c63fe (diff)
Hotplug: D-Bus: Dispatch harder
Dispatch until we've got nothing left to dispatch, since apparently dispatching will only ever fire a single message ...
Diffstat (limited to 'config/dbus-core.c')
-rw-r--r--config/dbus-core.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/config/dbus-core.c b/config/dbus-core.c
index b90e413f3..5cc80e32b 100644
--- a/config/dbus-core.c
+++ b/config/dbus-core.c
@@ -51,8 +51,12 @@ wakeup_handler(pointer data, int err, pointer read_mask)
{
struct dbus_core_info *info = data;
- if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask))
- dbus_connection_read_write_dispatch(info->connection, 0);
+ if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask)) {
+ do {
+ dbus_connection_read_write_dispatch(info->connection, 0);
+ } while (dbus_connection_get_dispatch_status(info->connection) ==
+ DBUS_DISPATCH_DATA_REMAINS);
+ }
}
static void