[PATCH 1/8 v2] qmi-codegen: port client code generation to use GTask

Aleksander Morgado aleksander at aleksander.es
Tue Apr 18 15:05:05 UTC 2017


On 18/04/17 16:35, Ben Chan wrote:
> ---
> good catch!
> 
> v2: remove `g_object_unref (self)' in ready function
> 
>  build-aux/qmi-codegen/Client.py | 47 +++++++++++++++--------------------------
>  1 file changed, 17 insertions(+), 30 deletions(-)
> 

Pushed to git master, thanks!

> diff --git a/build-aux/qmi-codegen/Client.py b/build-aux/qmi-codegen/Client.py
> index 796c3b8..8595733 100644
> --- a/build-aux/qmi-codegen/Client.py
> +++ b/build-aux/qmi-codegen/Client.py
> @@ -357,10 +357,7 @@ class Client:
>                  '    GAsyncResult *res,\n'
>                  '    GError **error)\n'
>                  '{\n'
> -                '   if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))\n'
> -                '       return NULL;\n'
> -                '\n'
> -                '   return ${output_underscore}_ref (g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res)));\n'
> +                '   return g_task_propagate_pointer (G_TASK (res), error);\n'
>                  '}\n')
>  
>              if message.abort:
> @@ -395,7 +392,7 @@ class Client:
>                  '${message_underscore}_ready (\n'
>                  '    QmiDevice *device,\n'
>                  '    GAsyncResult *res,\n'
> -                '    GSimpleAsyncResult *simple)\n'
> +                '    GTask *task)\n'
>                  '{\n'
>                  '    GError *error = NULL;\n'
>                  '    QmiMessage *reply;\n'
> @@ -413,11 +410,10 @@ class Client:
>                      '                guint16 transaction_id;\n'
>                      '                QmiMessage${service_camelcase}AbortInput *input;\n'
>                      '\n'
> -                    '                self = g_async_result_get_source_object (G_ASYNC_RESULT (simple));\n'
> +                    '                self = g_task_get_source_object (task);\n'
>                      '                g_assert (self != NULL);\n'
>                      '\n'
> -                    '                transaction_id = (guint16) GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (simple),\n'
> -                    '                                                                                "transaction-id"));\n'
> +                    '                transaction_id = (guint16) GPOINTER_TO_UINT (g_task_get_task_data (task));\n'
>                      '                g_assert (transaction_id != 0);\n'
>                      '\n'
>                      '                input = qmi_message_${service_lowercase}_abort_input_new ();\n'
> @@ -439,27 +435,24 @@ class Client:
>                      '                                    NULL);\n'
>                      '                qmi_message_${service_lowercase}_abort_input_unref (input);\n'
>                      '                qmi_message_unref (abort);\n'
> -                    '                g_object_unref (self);\n'
>                      '            }\n'
>                      '\n')
>  
>              template += (
> -                '        g_simple_async_result_take_error (simple, error);\n'
> -                '        g_simple_async_result_complete (simple);\n'
> -                '        g_object_unref (simple);\n'
> +                '        g_task_return_error (task, error);\n'
> +                '        g_object_unref (task);\n'
>                  '        return;\n'
>                  '    }\n'
>                  '\n'
>                  '    /* Parse reply */\n'
>                  '    output = __${message_fullname_underscore}_response_parse (reply, &error);\n'
>                  '    if (!output)\n'
> -                '        g_simple_async_result_take_error (simple, error);\n'
> +                '        g_task_return_error (task, error);\n'
>                  '    else\n'
> -                '        g_simple_async_result_set_op_res_gpointer (simple,\n'
> -                '                                                   output,\n'
> -                '                                                   (GDestroyNotify)${output_underscore}_unref);\n'
> -                '    g_simple_async_result_complete (simple);\n'
> -                '    g_object_unref (simple);\n'
> +                '        g_task_return_pointer (task,\n'
> +                '                               output,\n'
> +                '                               (GDestroyNotify)${output_underscore}_unref);\n'
> +                '    g_object_unref (task);\n'
>                  '    qmi_message_unref (reply);\n'
>                  '}\n'
>                  '\n'
> @@ -472,7 +465,7 @@ class Client:
>                  '    GAsyncReadyCallback callback,\n'
>                  '    gpointer user_data)\n'
>                  '{\n'
> -                '    GSimpleAsyncResult *result;\n'
> +                '    GTask *task;\n'
>                  '    QmiMessage *request;\n'
>                  '    GError *error = NULL;\n'
>                  '    guint16 transaction_id;\n')
> @@ -483,10 +476,7 @@ class Client:
>  
>              template += (
>                  '\n'
> -                '    result = g_simple_async_result_new (G_OBJECT (self),\n'
> -                '                                        callback,\n'
> -                '                                        user_data,\n'
> -                '                                        ${underscore}_${message_underscore});\n'
> +                '    task = g_task_new (self, cancellable, callback, user_data);\n'
>                  '\n'
>                  '    transaction_id = qmi_client_get_next_transaction_id (QMI_CLIENT (self));\n'
>                  '\n'
> @@ -497,18 +487,15 @@ class Client:
>                  '                  &error);\n'
>                  '    if (!request) {\n'
>                  '        g_prefix_error (&error, "Couldn\'t create request message: ");\n'
> -                '        g_simple_async_result_take_error (result, error);\n'
> -                '        g_simple_async_result_complete_in_idle (result);\n'
> -                '        g_object_unref (result);\n'
> +                '        g_task_return_error (task, error);\n'
> +                '        g_object_unref (task);\n'
>                  '        return;\n'
>                  '    }\n')
>  
>              if message.abort:
>                  template += (
>                      '\n'
> -                    '    g_object_set_data (G_OBJECT (result),\n'
> -                    '                       "transaction-id",\n'
> -                    '                       GUINT_TO_POINTER (transaction_id));\n')
> +                    '    g_task_set_task_data (task, GUINT_TO_POINTER (transaction_id), NULL);\n')
>  
>              if message.vendor is not None:
>                  template += (
> @@ -532,7 +519,7 @@ class Client:
>                  '                             timeout,\n'
>                  '                             cancellable,\n'
>                  '                             (GAsyncReadyCallback)${message_underscore}_ready,\n'
> -                '                             result);\n'
> +                '                             task);\n'
>                  '    qmi_message_unref (request);\n')
>  
>              if message.vendor is not None:
> 


-- 
Aleksander
https://aleksander.es


More information about the libqmi-devel mailing list