diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-05-27 15:31:37 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-05-27 15:31:37 +0200 |
commit | 4a292d31a0b7348346eabd6c7cd5834de2b0a8ce (patch) | |
tree | ba800ca3004bce2b6a403f408e3c23b10299f2ea | |
parent | f125c5a30952c1ffea2402abc73a17e9ed497248 (diff) | |
download | ModemManager-aleksander/supported-modes.tar.gz |
iface-modem: don't update current modes if modem not yet enabledaleksander/supported-modes
-rw-r--r-- | src/mm-iface-modem.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 2067c7468..587afc27b 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -2185,6 +2185,7 @@ set_modes_ready (MMIfaceModem *self, GAsyncResult *res, SetModesContext *ctx) { + MMModemState modem_state; GError *error = NULL; if (!MM_IFACE_MODEM_GET_INTERFACE (self)->set_modes_finish (self, res, &error)) { @@ -2193,19 +2194,27 @@ set_modes_ready (MMIfaceModem *self, return; } - if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes && - MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes_finish) { - MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes ( - ctx->self, - (GAsyncReadyCallback)after_set_load_current_modes_ready, - ctx); - return; + /* If modem is not enabled, avoid updating the current modes */ + modem_state = MM_MODEM_STATE_UNKNOWN; + g_object_get (ctx->self, + MM_IFACE_MODEM_STATE, &modem_state, + NULL); + if (modem_state >= MM_MODEM_STATE_ENABLING) { + if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes && + MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes_finish) { + MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes ( + ctx->self, + (GAsyncReadyCallback)after_set_load_current_modes_ready, + ctx); + return; + } + + mm_gdbus_modem_set_modes (ctx->skeleton, + g_variant_new ("(uu)", + ctx->allowed, + ctx->preferred)); } - mm_gdbus_modem_set_modes (ctx->skeleton, - g_variant_new ("(uu)", - ctx->allowed, - ctx->preferred)); g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); set_modes_context_complete_and_free (ctx); } |