summaryrefslogtreecommitdiffstats
path: root/tools/dbus-launch.c
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2008-04-03 11:11:19 -0400
committerJohn (J5) Palmieri <johnp@redhat.com>2008-04-03 11:11:19 -0400
commit960fef844bdb0054c082a31e43f9631b1d5eb69b (patch)
treee39cc0f5db0dce6149711c9088d2965130ade8e0 /tools/dbus-launch.c
parenta37404111be4912cd8b51080bcbe219edded35f5 (diff)
parent68f69d38182ed5974984b0434086e6a288b477cb (diff)
Merge branch 'master' of git+ssh://johnp@git.freedesktop.org/git/dbus/dbus
Conflicts: ChangeLog
Diffstat (limited to 'tools/dbus-launch.c')
-rw-r--r--tools/dbus-launch.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c
index 6a10ffa3..216f7435 100644
--- a/tools/dbus-launch.c
+++ b/tools/dbus-launch.c
@@ -458,6 +458,17 @@ kill_bus_when_session_ends (void)
while (TRUE)
{
+#ifdef DBUS_BUILD_X11
+ /* Dump events on the floor, and let
+ * IO error handler run if we lose
+ * the X connection. It's important to
+ * run this before going into select() since
+ * we might have queued outgoing messages or
+ * events.
+ */
+ x11_handle_event ();
+#endif
+
FD_ZERO (&read_set);
FD_ZERO (&err_set);
@@ -472,7 +483,7 @@ kill_bus_when_session_ends (void)
FD_SET (x_fd, &read_set);
FD_SET (x_fd, &err_set);
}
-
+
select (MAX (tty_fd, x_fd) + 1,
&read_set, NULL, &err_set, NULL);
@@ -483,15 +494,12 @@ kill_bus_when_session_ends (void)
}
#ifdef DBUS_BUILD_X11
- /* Dump events on the floor, and let
- * IO error handler run if we lose
- * the X connection
+ /* Events will be processed before we select again
*/
if (x_fd >= 0)
verbose ("X fd condition reading = %d error = %d\n",
FD_ISSET (x_fd, &read_set),
FD_ISSET (x_fd, &err_set));
- x11_handle_event ();
#endif
if (tty_fd >= 0)