if ((!error) || (!dbus_error_is_set(error)))
{
printf("DBG CONNMAN: successfuly toggled to offline mode\n");
- // XXX hack: connman does not emit propertychanged for this, they need to fix it
- e_connman_manager_sync_elements();
- _connman_default_service_changed_delayed(ctxt);
+ ctxt->offline_mode_pending = EINA_FALSE;
return;
}
dbus_error_free(error);
}
-static void
-_connman_toggle_offline_mode_pending_cb(void *data, DBusMessage *msg, DBusError *error)
-{
- E_Connman_Module_Context *ctxt = data;
- ctxt->offline_mode_pending = EINA_FALSE;
- _connman_toggle_offline_mode_cb(data, msg, error);
-}
-
static void
_connman_toggle_offline_mode(E_Connman_Module_Context *ctxt)
{
(_("Cannot toggle system's offline mode."));
return;
}
+ ctxt->offline_mode_pending = EINA_TRUE;
}
static void
if ((ctxt->offline_mode == e_config->mode.offline) ||
(!ctxt->has_manager))
return 1;
-
- if (!e_connman_manager_offline_mode_set
- (e_config->mode.offline, _connman_toggle_offline_mode_pending_cb, ctxt))
- _connman_operation_error_show
- (_("Cannot toggle system's offline mode."));
+ if (!ctxt->offline_mode_pending)
+ {
+ if (!e_connman_manager_offline_mode_set(e_config->mode.offline,
+ _connman_toggle_offline_mode_cb, ctxt))
+ _connman_operation_error_show(_("Cannot toggle system's offline mode."));
+ }
else
- ctxt->offline_mode_pending = EINA_TRUE;
+ ctxt->offline_mode_pending = EINA_FALSE;
return 1;
}