From e2d20974c14b1c28d172864974e1e73b2f65dc10 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 25 Oct 2012 16:18:16 +0200 Subject: iface-modem: don't re-set interface skeleton after PIN unlock Before the change, the client application loses all new property change notifications in the interface object: $ sudo mmcli -m 0 -w /org/freedesktop/ModemManager1/Modem/0: Initial state, 'locked' /org/freedesktop/ModemManager1/Modem/0: State changed, 'locked' --> 'initializing' (Reason: None or unknown) After the change, it doesn't: $ sudo mmcli -m 0 -w /org/freedesktop/ModemManager1/Modem/0: Initial state, 'locked' /org/freedesktop/ModemManager1/Modem/0: State changed, 'locked' --> 'initializing' (Reason: None or unknown) /org/freedesktop/ModemManager1/Modem/0: State changed, 'initializing' --> 'disabled' (Reason: None or unknown) /org/freedesktop/ModemManager1/Modem/0: State changed, 'disabled' --> 'enabling' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'enabling' --> 'registered' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'registered' --> 'disabling' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'disabling' --> 'disabled' (Reason: User request) --- src/mm-iface-modem.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index e7bfb969..27ac2572 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -3694,9 +3694,11 @@ interface_initialization_step (InitializationContext *ctx) g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); } - /* Finally, export the new interface, even if we got errors */ - mm_gdbus_object_skeleton_set_modem (MM_GDBUS_OBJECT_SKELETON (ctx->self), - MM_GDBUS_MODEM (ctx->skeleton)); + /* Finally, export the new interface, even if we got errors, but only if not + * done already */ + if (!mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (ctx->self))) + mm_gdbus_object_skeleton_set_modem (MM_GDBUS_OBJECT_SKELETON (ctx->self), + MM_GDBUS_MODEM (ctx->skeleton)); initialization_context_complete_and_free (ctx); return; } -- cgit v1.2.3-70-g09d2