summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-05-27 15:31:37 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-05-27 15:31:37 +0200
commit4a292d31a0b7348346eabd6c7cd5834de2b0a8ce (patch)
treeba800ca3004bce2b6a403f408e3c23b10299f2ea
parentf125c5a30952c1ffea2402abc73a17e9ed497248 (diff)
downloadModemManager-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.c31
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);
}