aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-03-26 16:40:54 +0100
committerDan Williams <dcbw@redhat.com>2013-03-27 08:27:30 -0500
commitb377a62377db46c2cdb2b3b8f6f4166f7d2a3dcc (patch)
tree587a7a16d4a569af98eb8079adcecae3b360f827
parent7f1bea5fbf9ea25eeebb320e476d56ece44f276e (diff)
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
-rw-r--r--src/mm-broadband-modem.c52
-rw-r--r--src/mm-iface-modem.c6
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;