diff options
| author | Michael Biebl <biebl@debian.org> | 2011-10-28 23:04:16 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2011-10-28 23:04:16 +0200 |
| commit | 485d149fe80915d94ed49ea6c2c0552cf7a3e79a (patch) | |
| tree | 6a48492b46b8c1e3df1c58626c28f05a978c61f7 /src/modem-manager/nm-modem-manager.c | |
| parent | 263bf4c0c89bb88dc995acd9a6a2de9095fbd461 (diff) | |
Imported Upstream version 0.9.1.95 upstream/0.9.1.95
Diffstat (limited to 'src/modem-manager/nm-modem-manager.c')
| -rw-r--r-- | src/modem-manager/nm-modem-manager.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c index f5ade50c..3509d667 100644 --- a/src/modem-manager/nm-modem-manager.c +++ b/src/modem-manager/nm-modem-manager.c @@ -29,6 +29,7 @@ #include "nm-dbus-manager.h" #include "nm-modem-types.h" #include "nm-marshal.h" +#include "nm-dbus-glib-types.h" #define MODEM_POKE_INTERVAL 120 @@ -235,6 +236,23 @@ modem_removed (DBusGProxy *proxy, const char *path, gpointer user_data) } } +static void +mm_poke_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data) +{ + GPtrArray *modems; + int i; + + if (dbus_g_proxy_end_call (proxy, call, NULL, + DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH, &modems, + G_TYPE_INVALID)) { + /* Don't care about the returned value, just free it */ + for (i = 0; i < modems->len; i++) + g_free ((char *) g_ptr_array_index (modems, i)); + g_ptr_array_free (modems, TRUE); + } + g_object_unref (proxy); +} + static gboolean poke_modem_cb (gpointer user_data) { @@ -242,6 +260,7 @@ poke_modem_cb (gpointer user_data) NMModemManagerPrivate *priv = NM_MODEM_MANAGER_GET_PRIVATE (self); DBusGConnection *g_connection; DBusGProxy *proxy; + DBusGProxyCall *call; g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr); proxy = dbus_g_proxy_new_for_name (g_connection, @@ -249,9 +268,13 @@ poke_modem_cb (gpointer user_data) MM_DBUS_PATH, MM_DBUS_INTERFACE); - dbus_g_proxy_call_no_reply (proxy, "EnumerateDevices", G_TYPE_INVALID); - g_object_unref (proxy); - + call = dbus_g_proxy_begin_call_with_timeout (proxy, + "EnumerateDevices", + mm_poke_cb, + NULL, + NULL, + 5000, + G_TYPE_INVALID); return TRUE; } |