summaryrefslogtreecommitdiff
path: root/gdbus/mainloop.c
diff options
context:
space:
mode:
authorZhang zhengguang <zhengguang.zhang@intel.com>2014-07-17 10:37:39 +0800
committerZhang zhengguang <zhengguang.zhang@intel.com>2014-07-17 10:37:39 +0800
commit1b9d0a62f59bb48c8deb2f0b98d9acdffdd9abe7 (patch)
tree6e991827d28537f7f40f20786c2354fd04a9fdad /gdbus/mainloop.c
parentfbe905ab58ecc31fe64c410c5f580cadc30e7f04 (diff)
downloadconnman-upstream/1.24.tar.gz
connman-upstream/1.24.tar.bz2
connman-upstream/1.24.zip
Imported Upstream version 1.24upstream/1.24
Diffstat (limited to 'gdbus/mainloop.c')
-rw-r--r--gdbus/mainloop.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/gdbus/mainloop.c b/gdbus/mainloop.c
index 099b67fe..435fb93b 100644
--- a/gdbus/mainloop.c
+++ b/gdbus/mainloop.c
@@ -30,8 +30,6 @@
#include "gdbus.h"
-#define DISPATCH_TIMEOUT 0
-
#define info(fmt...)
#define error(fmt...)
#define debug(fmt...)
@@ -70,8 +68,6 @@ static gboolean message_dispatch(void *data)
{
DBusConnection *conn = data;
- dbus_connection_ref(conn);
-
/* Dispatch messages */
while (dbus_connection_dispatch(conn) == DBUS_DISPATCH_DATA_REMAINS);
@@ -84,7 +80,7 @@ static inline void queue_dispatch(DBusConnection *conn,
DBusDispatchStatus status)
{
if (status == DBUS_DISPATCH_DATA_REMAINS)
- g_timeout_add(DISPATCH_TIMEOUT, message_dispatch, conn);
+ g_idle_add(message_dispatch, dbus_connection_ref(conn));
}
static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
@@ -92,9 +88,6 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
struct watch_info *info = data;
unsigned int flags = 0;
DBusDispatchStatus status;
- DBusConnection *conn;
-
- conn = dbus_connection_ref(info->conn);
if (cond & G_IO_IN) flags |= DBUS_WATCH_READABLE;
if (cond & G_IO_OUT) flags |= DBUS_WATCH_WRITABLE;
@@ -103,10 +96,8 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
dbus_watch_handle(info->watch, flags);
- status = dbus_connection_get_dispatch_status(conn);
- queue_dispatch(conn, status);
-
- dbus_connection_unref(conn);
+ status = dbus_connection_get_dispatch_status(info->conn);
+ queue_dispatch(info->conn, status);
return TRUE;
}