diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-11-22 18:47:00 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:23 +0100 |
commit | 23dd4d7e8227b2b1bd11eaee47aa3214c9ef688c (patch) | |
tree | 40e9ef2d7c3072c2af22e736702ff44f318c838e /src/mm-sim.c | |
parent | ff0136ed04ca8b94de1de3b78bd63a22dd01e809 (diff) |
sim: allow re-launching initialization
It may happen that we cannot load property values when the SIM is locked, so
we need to enable re-launching initialization in the object API.
Diffstat (limited to 'src/mm-sim.c')
-rw-r--r-- | src/mm-sim.c | 53 |
1 files changed, 41 insertions, 12 deletions
diff --git a/src/mm-sim.c b/src/mm-sim.c index 782438d0..ebd3c68e 100644 --- a/src/mm-sim.c +++ b/src/mm-sim.c @@ -746,28 +746,22 @@ interface_initialization_step (InitAsyncContext *ctx) interface_initialization_step (ctx); } - static void -initable_init_async (GAsyncInitable *initable, - int io_priority, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +common_init_async (GAsyncInitable *initable, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) + { InitAsyncContext *ctx; GError *error = NULL; - mm_gdbus_sim_set_sim_identifier (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_imsi (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_operator_identifier (MM_GDBUS_SIM (initable), NULL); - mm_gdbus_sim_set_operator_name (MM_GDBUS_SIM (initable), NULL); - ctx = g_new (InitAsyncContext, 1); ctx->self = g_object_ref (initable); ctx->result = g_simple_async_result_new (G_OBJECT (initable), callback, user_data, - initable_init_async); + common_init_async); ctx->cancellable = (cancellable ? g_object_ref (cancellable) : NULL); @@ -785,6 +779,21 @@ initable_init_async (GAsyncInitable *initable, interface_initialization_step (ctx); } +static void +initable_init_async (GAsyncInitable *initable, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + mm_gdbus_sim_set_sim_identifier (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_imsi (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_operator_identifier (MM_GDBUS_SIM (initable), NULL); + mm_gdbus_sim_set_operator_name (MM_GDBUS_SIM (initable), NULL); + + common_init_async (initable, cancellable, callback, user_data); +} + void mm_sim_new (MMBaseModem *modem, GCancellable *cancellable, @@ -807,6 +816,26 @@ mm_sim_new (MMBaseModem *modem, g_free (path); } +gboolean +mm_sim_initialize_finish (MMSim *self, + GAsyncResult *result, + GError **error) +{ + return initable_init_finish (G_ASYNC_INITABLE (self), result, error); +} + +void +mm_sim_initialize (MMSim *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + common_init_async (G_ASYNC_INITABLE (self), + cancellable, + callback, + user_data); +} + static void set_property (GObject *object, guint prop_id, |