On 15/04/17 23:26, Aleksander Morgado wrote: > When the GCancellable is added to the GTask, we can use a single > method call to check for the task being cancelled, and complete it > right away if so. > > This patch also clears up the logic in the Novatel plugin, where the > code was trying to return "TRUE" when the task was cancelled, but > wouldn't work as the check-cancellable flag in the GTask is TRUE by > default (i.e. when completing the GTask, if it was cancelled, a > G_IO_ERROR_CANCELLED would be returned by default, regardless of any > other return value set). > > This patch also introduces a small variation of the logic in the > Cinterion plugin: instead of running SWWAN=0 before completing the > async action, the command is now sent just after completion of the > async action. This shouldn't be an issue, as the SWWAN result itself > is ignored. > --- > > Hey Ben, > > What do you think of these changes? I believe we should start using this > where applicable, instead of the custom checks and errors. >
This has been pushed to git master. > --- > plugins/cinterion/mm-broadband-bearer-cinterion.c | 7 ++----- > plugins/novatel/mm-common-novatel.c | 3 +-- > src/mm-auth-provider-polkit.c | 6 +----- > src/mm-iface-modem-signal.c | 6 +----- > 4 files changed, 5 insertions(+), 17 deletions(-) > > diff --git a/plugins/cinterion/mm-broadband-bearer-cinterion.c > b/plugins/cinterion/mm-broadband-bearer-cinterion.c > index 741d2935..a1c699e9 100644 > --- a/plugins/cinterion/mm-broadband-bearer-cinterion.c > +++ b/plugins/cinterion/mm-broadband-bearer-cinterion.c > @@ -343,10 +343,6 @@ handle_cancel_dial (GTask *task) > NULL, > NULL); > g_free (command); > - > - g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_CANCELLED, > - "Connection operation has been cancelled"); > - g_object_unref (task); > } > > static void > @@ -357,8 +353,9 @@ dial_3gpp_context_step (GTask *task) > ctx = (Dial3gppContext *) g_task_get_task_data (task); > > /* Check for cancellation */ > - if (g_cancellable_is_cancelled (g_task_get_cancellable (task))) { > + if (g_task_return_error_if_cancelled (task)) { > handle_cancel_dial (task); > + g_object_unref (task); > return; > } > > diff --git a/plugins/novatel/mm-common-novatel.c > b/plugins/novatel/mm-common-novatel.c > index 96d845f1..f8c78f51 100644 > --- a/plugins/novatel/mm-common-novatel.c > +++ b/plugins/novatel/mm-common-novatel.c > @@ -87,10 +87,9 @@ custom_init_step (GTask *task) > ctx = g_task_get_task_data (task); > > /* If cancelled, end */ > - if (g_cancellable_is_cancelled (g_task_get_cancellable (task))) { > + if (g_task_return_error_if_cancelled (task)) { > mm_dbg ("(Novatel) no need to keep on running custom init in (%s)", > mm_port_get_device (MM_PORT (ctx->port))); > - g_task_return_boolean (task, TRUE); > g_object_unref (task); > return; > } > diff --git a/src/mm-auth-provider-polkit.c b/src/mm-auth-provider-polkit.c > index 3b9b4250..7e88d67c 100644 > --- a/src/mm-auth-provider-polkit.c > +++ b/src/mm-auth-provider-polkit.c > @@ -72,11 +72,7 @@ check_authorization_ready (PolkitAuthority *authority, > GError *error = NULL; > AuthorizeContext *ctx; > > - if (g_cancellable_is_cancelled (g_task_get_cancellable (task))) { > - g_task_return_new_error (task, > - MM_CORE_ERROR, > - MM_CORE_ERROR_CANCELLED, > - "PolicyKit authorization attempt > cancelled"); > + if (g_task_return_error_if_cancelled (task)) { > g_object_unref (task); > return; > } > diff --git a/src/mm-iface-modem-signal.c b/src/mm-iface-modem-signal.c > index 9751b5d6..99096a95 100644 > --- a/src/mm-iface-modem-signal.c > +++ b/src/mm-iface-modem-signal.c > @@ -418,11 +418,7 @@ interface_initialization_step (GTask *task) > InitializationContext *ctx; > > /* Don't run new steps if we're cancelled */ > - if (g_cancellable_is_cancelled (g_task_get_cancellable (task))) { > - g_task_return_new_error (task, > - MM_CORE_ERROR, > - MM_CORE_ERROR_CANCELLED, > - "Interface initialization cancelled"); > + if (g_task_return_error_if_cancelled (task)) { > g_object_unref (task); > return; > } > -- > 2.12.2 > -- Aleksander https://aleksander.es _______________________________________________ ModemManager-devel mailing list ModemManager-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel