diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-11-15 19:06:58 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-11-21 10:50:49 +0100 |
commit | 7f442b777c6fe7fd71f4f9022121752dabad5cdd (patch) | |
tree | d77ebb9ffa37c6abb549c85806b30bc4e1a73045 /libmm-glib/mm-modem.c | |
parent | c21709b32e1af46f1764888a03b21fd747db7da1 (diff) |
introspection,api: new 'Bearers' property in the Modem interface
https://bugzilla.gnome.org/show_bug.cgi?id=712276
Diffstat (limited to 'libmm-glib/mm-modem.c')
-rw-r--r-- | libmm-glib/mm-modem.c | 52 |
1 files changed, 16 insertions, 36 deletions
diff --git a/libmm-glib/mm-modem.c b/libmm-glib/mm-modem.c index 780fd6d2..c1dee3ac 100644 --- a/libmm-glib/mm-modem.c +++ b/libmm-glib/mm-modem.c @@ -1721,7 +1721,7 @@ bearer_object_list_free (GList *list) static void list_bearers_context_complete_and_free (ListBearersContext *ctx) { - g_simple_async_result_complete (ctx->result); + g_simple_async_result_complete_in_idle (ctx->result); g_strfreev (ctx->bearer_paths); bearer_object_list_free (ctx->bearer_objects); @@ -1816,32 +1816,6 @@ create_next_bearer (ListBearersContext *ctx) NULL); } -static void -modem_list_bearers_ready (MMModem *self, - GAsyncResult *res, - ListBearersContext *ctx) -{ - GError *error = NULL; - - mm_gdbus_modem_call_list_bearers_finish (MM_GDBUS_MODEM (self), &ctx->bearer_paths, res, &error); - if (error) { - g_simple_async_result_take_error (ctx->result, error); - list_bearers_context_complete_and_free (ctx); - return; - } - - /* If no bearers, just end here. */ - if (!ctx->bearer_paths || !ctx->bearer_paths[0]) { - g_simple_async_result_set_op_res_gpointer (ctx->result, NULL, NULL); - list_bearers_context_complete_and_free (ctx); - return; - } - - /* Got list of paths. If at least one found, start creating objects for each */ - ctx->i = 0; - create_next_bearer (ctx); -} - /** * mm_modem_list_bearers: * @self: A #MMModem. @@ -1875,10 +1849,19 @@ mm_modem_list_bearers (MMModem *self, if (cancellable) ctx->cancellable = g_object_ref (cancellable); - mm_gdbus_modem_call_list_bearers (MM_GDBUS_MODEM (self), - cancellable, - (GAsyncReadyCallback)modem_list_bearers_ready, - ctx); + /* Read from the property, skip List() */ + ctx->bearer_paths = mm_gdbus_modem_dup_bearers (MM_GDBUS_MODEM (self)); + + /* If no bearers, just end here. */ + if (!ctx->bearer_paths || !ctx->bearer_paths[0]) { + g_simple_async_result_set_op_res_gpointer (ctx->result, NULL, NULL); + list_bearers_context_complete_and_free (ctx); + return; + } + + /* Got list of paths. If at least one found, start creating objects for each */ + ctx->i = 0; + create_next_bearer (ctx); } /** @@ -1905,11 +1888,8 @@ mm_modem_list_bearers_sync (MMModem *self, g_return_val_if_fail (MM_IS_MODEM (self), NULL); - if (!mm_gdbus_modem_call_list_bearers_sync (MM_GDBUS_MODEM (self), - &bearer_paths, - cancellable, - error)) - return NULL; + /* Read from the property, skip List() */ + bearer_paths = mm_gdbus_modem_dup_bearers (MM_GDBUS_MODEM (self)); /* Only non-empty lists are returned */ if (!bearer_paths) |