gdbus: fix not handling bus disconnects

We where not dispatching data when a bus disconnects which cause
Disconnected signal to not be processed and thus causing the process to
either not exit or to not trigger callbacks registered with
g_dbus_set_disconnect_function.

To fix this now we always schedule a dispatch which will make sure data
still not processed will make its way to the proper handlers even if
disconnected.
This commit is contained in:
Luiz Augusto von Dentz 2010-10-13 15:06:46 +03:00 committed by Marcel Holtmann
parent 5085e299fd
commit c896d11724
1 changed files with 4 additions and 0 deletions

View File

@ -95,6 +95,7 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
{
struct watch_info *info = data;
unsigned int flags = 0;
DBusDispatchStatus status;
dbus_connection_ref(info->conn);
@ -105,6 +106,9 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
dbus_watch_handle(info->watch, flags);
status = dbus_connection_get_dispatch_status(info->conn);
queue_dispatch(info->conn, status);
dbus_connection_unref(info->conn);
return TRUE;