From b377a62377db46c2cdb2b3b8f6f4166f7d2a3dcc Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 26 Mar 2013 16:40:54 +0100 Subject: iface-modem: never try to create a SIM in a CDMA-only modem CDMA modems without LTE capabilities will usually not have a SIM, so just skip loading a SIM object if so. https://bugzilla.gnome.org/show_bug.cgi?id=696582 --- src/mm-broadband-modem.c | 52 +++--------------------------------------------- src/mm-iface-modem.c | 6 ++++-- 2 files changed, 7 insertions(+), 51 deletions(-) diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 396ef974..50309488 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -280,37 +280,7 @@ modem_create_sim_finish (MMIfaceModem *self, GAsyncResult *res, GError **error) { - MMSim *sim; - - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error)) - return NULL; - - sim = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res)); - return (sim ? g_object_ref (sim) : NULL); -} - -static void -modem_create_sim_ready (GObject *source, - GAsyncResult *res, - GSimpleAsyncResult *simple) -{ - MMSim *sim; - GError *error = NULL; - - sim = mm_sim_new_finish (res, &error); - if (!sim) - g_simple_async_result_take_error (simple, error); - else { - mm_dbg ("New SIM created at DBus path '%s'", - mm_sim_get_path (sim)); - g_simple_async_result_set_op_res_gpointer ( - simple, - sim, - (GDestroyNotify)g_object_unref); - } - - g_simple_async_result_complete (simple); - g_object_unref (simple); + return mm_sim_new_finish (res, error); } static void @@ -318,27 +288,11 @@ modem_create_sim (MMIfaceModem *self, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *result; - - result = g_simple_async_result_new (G_OBJECT (self), - callback, - user_data, - modem_create_sim); - - /* CDMA-only modems don't need this */ - if (mm_iface_modem_is_cdma_only (self)) { - mm_dbg ("Skipping SIM creation in CDMA-only modem..."); - g_simple_async_result_set_op_res_gpointer (result, NULL, NULL); - g_simple_async_result_complete_in_idle (result); - g_object_unref (result); - return; - } - /* New generic SIM */ mm_sim_new (MM_BASE_MODEM (self), NULL, /* cancellable */ - (GAsyncReadyCallback)modem_create_sim_ready, - result); + callback, + user_data); } /*****************************************************************************/ diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 4fbba487..b36947f6 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -3961,8 +3961,10 @@ interface_initialization_step (InitializationContext *ctx) ctx->step++; case INITIALIZATION_STEP_SIM: - /* If the modem doesn't need any SIM, skip */ - if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->create_sim && + /* If the modem doesn't need any SIM (not implemented by plugin, or not + * needed in CDMA-only modems) */ + if (!mm_iface_modem_is_cdma_only (ctx->self) && + MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->create_sim && MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->create_sim_finish) { MMSim *sim = NULL; -- cgit v1.2.3