09dd0e2
From 21bdee77727417b6b16feed7b466953873319b58 Mon Sep 17 00:00:00 2001
09dd0e2
From: Ernestas Kulik <ekulik@redhat.com>
09dd0e2
Date: Tue, 8 Jan 2019 14:26:15 +0100
09dd0e2
Subject: [PATCH] dbus: task: Use modern GLib type macros
09dd0e2
09dd0e2
Signed-off-by: Ernestas Kulik <ekulik@redhat.com>
09dd0e2
---
09dd0e2
 src/dbus/abrt_problems2_task.c | 111 ++++++++++++++++++++++++---------
09dd0e2
 src/dbus/abrt_problems2_task.h |  26 +-------
09dd0e2
 2 files changed, 82 insertions(+), 55 deletions(-)
09dd0e2
09dd0e2
diff --git a/src/dbus/abrt_problems2_task.c b/src/dbus/abrt_problems2_task.c
09dd0e2
index f40381f6..cba6b469 100644
09dd0e2
--- a/src/dbus/abrt_problems2_task.c
09dd0e2
+++ b/src/dbus/abrt_problems2_task.c
09dd0e2
@@ -25,6 +25,15 @@ enum {
09dd0e2
 
09dd0e2
 static guint s_signals[SN_LAST_SIGNAL] = { 0 };
09dd0e2
 
09dd0e2
+struct _AbrtP2TaskPrivate
09dd0e2
+{
09dd0e2
+    gint32 p2t_status;
09dd0e2
+    GVariant *p2t_details;
09dd0e2
+    GVariant *p2t_results;
09dd0e2
+    gint32 p2t_code;
09dd0e2
+    GCancellable *p2t_cancellable;
09dd0e2
+};
09dd0e2
+
09dd0e2
 G_DEFINE_TYPE_WITH_PRIVATE(AbrtP2Task, abrt_p2_task, G_TYPE_OBJECT)
09dd0e2
 
09dd0e2
 static void abrt_p2_task_finalize(GObject *gobject)
09dd0e2
@@ -74,17 +83,24 @@ static void abrt_p2_task_class_init(AbrtP2TaskClass *klass)
09dd0e2
 
09dd0e2
 static void abrt_p2_task_init(AbrtP2Task *self)
09dd0e2
 {
09dd0e2
-    self->pv = abrt_p2_task_get_instance_private(self);
09dd0e2
-    self->pv->p2t_details = g_variant_new("a{sv}", NULL);
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(self);
09dd0e2
+
09dd0e2
+    pv->p2t_details = g_variant_new("a{sv}", NULL);
09dd0e2
 }
09dd0e2
 
09dd0e2
 static void abrt_p2_task_change_status(AbrtP2Task *task,
09dd0e2
             AbrtP2TaskStatus status)
09dd0e2
 {
09dd0e2
-    if (task->pv->p2t_status == status)
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    if (pv->p2t_status == status)
09dd0e2
         return;
09dd0e2
 
09dd0e2
-    task->pv->p2t_status = status;
09dd0e2
+    pv->p2t_status = status;
09dd0e2
 
09dd0e2
     g_signal_emit(task,
09dd0e2
                   s_signals[SN_STATUS_CHANGED],
09dd0e2
@@ -94,53 +110,77 @@ static void abrt_p2_task_change_status(AbrtP2Task *task,
09dd0e2
 
09dd0e2
 AbrtP2TaskStatus abrt_p2_task_status(AbrtP2Task *task)
09dd0e2
 {
09dd0e2
-    return task->pv->p2t_status;
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    return pv->p2t_status;
09dd0e2
 }
09dd0e2
 
09dd0e2
 GVariant *abrt_p2_task_details(AbrtP2Task *task)
09dd0e2
 {
09dd0e2
-    return g_variant_ref(task->pv->p2t_details);
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    return g_variant_ref(pv->p2t_details);
09dd0e2
 }
09dd0e2
 
09dd0e2
 void abrt_p2_task_add_detail(AbrtP2Task *task,
09dd0e2
             const char *key,
09dd0e2
             GVariant *value)
09dd0e2
 {
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
     GVariantDict dict;
09dd0e2
-    g_variant_dict_init(&dict, task->pv->p2t_details);
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    g_variant_dict_init(&dict, pv->p2t_details);
09dd0e2
     g_variant_dict_insert(&dict, key, "v", value);
09dd0e2
 
09dd0e2
-    if (task->pv->p2t_details)
09dd0e2
-        g_variant_unref(task->pv->p2t_details);
09dd0e2
+    if (pv->p2t_details)
09dd0e2
+        g_variant_unref(pv->p2t_details);
09dd0e2
 
09dd0e2
-    task->pv->p2t_details = g_variant_dict_end(&dict);
09dd0e2
+    pv->p2t_details = g_variant_dict_end(&dict);
09dd0e2
 }
09dd0e2
 
09dd0e2
 void abrt_p2_task_set_response(AbrtP2Task *task,
09dd0e2
             GVariant *response)
09dd0e2
 {
09dd0e2
-    if (task->pv->p2t_results != NULL)
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    if (pv->p2t_results != NULL)
09dd0e2
         log_warning("Task already has response assigned");
09dd0e2
 
09dd0e2
-    task->pv->p2t_results = response;
09dd0e2
+    pv->p2t_results = response;
09dd0e2
 }
09dd0e2
 
09dd0e2
 bool abrt_p2_task_is_cancelled(AbrtP2Task *task)
09dd0e2
 {
09dd0e2
-    return (task->pv->p2t_cancellable
09dd0e2
-              && g_cancellable_is_cancelled(task->pv->p2t_cancellable))
09dd0e2
-           || task->pv->p2t_status == ABRT_P2_TASK_STATUS_CANCELED;
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    return (pv->p2t_cancellable
09dd0e2
+              && g_cancellable_is_cancelled(pv->p2t_cancellable))
09dd0e2
+           || pv->p2t_status == ABRT_P2_TASK_STATUS_CANCELED;
09dd0e2
 }
09dd0e2
 
09dd0e2
 void abrt_p2_task_cancel(AbrtP2Task *task,
09dd0e2
             GError **error)
09dd0e2
 {
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
     if (abrt_p2_task_is_cancelled(task))
09dd0e2
         return;
09dd0e2
 
09dd0e2
-    if (task->pv->p2t_status == ABRT_P2_TASK_STATUS_RUNNING)
09dd0e2
-        g_cancellable_cancel(task->pv->p2t_cancellable);
09dd0e2
-    else if (task->pv->p2t_status == ABRT_P2_TASK_STATUS_STOPPED)
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    if (pv->p2t_status == ABRT_P2_TASK_STATUS_RUNNING)
09dd0e2
+        g_cancellable_cancel(pv->p2t_cancellable);
09dd0e2
+    else if (pv->p2t_status == ABRT_P2_TASK_STATUS_STOPPED)
09dd0e2
     {
09dd0e2
         ABRT_P2_TASK_VIRTUAL_CANCEL(task, error);
09dd0e2
 
09dd0e2
@@ -157,8 +197,12 @@ void abrt_p2_task_finish(AbrtP2Task *task,
09dd0e2
             gint32 *code,
09dd0e2
             GError **error)
09dd0e2
 {
09dd0e2
-    if (   task->pv->p2t_status != ABRT_P2_TASK_STATUS_DONE
09dd0e2
-        && task->pv->p2t_status != ABRT_P2_TASK_STATUS_FAILED)
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    if (   pv->p2t_status != ABRT_P2_TASK_STATUS_DONE
09dd0e2
+        && pv->p2t_status != ABRT_P2_TASK_STATUS_FAILED)
09dd0e2
     {
09dd0e2
         g_set_error(error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED,
09dd0e2
                 "Cannot finalize undone task");
09dd0e2
@@ -170,12 +214,12 @@ void abrt_p2_task_finish(AbrtP2Task *task,
09dd0e2
     if (*error != NULL)
09dd0e2
         return;
09dd0e2
 
09dd0e2
-    if (task->pv->p2t_results)
09dd0e2
-        *result = g_variant_ref(task->pv->p2t_results);
09dd0e2
+    if (pv->p2t_results)
09dd0e2
+        *result = g_variant_ref(pv->p2t_results);
09dd0e2
     else
09dd0e2
         *result = g_variant_new("a{sv}", NULL);
09dd0e2
 
09dd0e2
-    *code = task->pv->p2t_code;
09dd0e2
+    *code = pv->p2t_code;
09dd0e2
 }
09dd0e2
 
09dd0e2
 static void abrt_p2_task_finish_gtask(GObject *source_object,
09dd0e2
@@ -183,6 +227,7 @@ static void abrt_p2_task_finish_gtask(GObject *source_object,
09dd0e2
            gpointer user_data)
09dd0e2
 {
09dd0e2
     AbrtP2Task *task = ABRT_P2_TASK(source_object);
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
 
09dd0e2
     if (!g_task_is_valid(result, task))
09dd0e2
     {
09dd0e2
@@ -190,6 +235,8 @@ static void abrt_p2_task_finish_gtask(GObject *source_object,
09dd0e2
         return;
09dd0e2
     }
09dd0e2
 
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
     GError *error = NULL;
09dd0e2
     const gint32 code = g_task_propagate_int(G_TASK(result), &error);
09dd0e2
 
09dd0e2
@@ -203,7 +250,7 @@ static void abrt_p2_task_finish_gtask(GObject *source_object,
09dd0e2
     {
09dd0e2
         log_debug("Task done");
09dd0e2
 
09dd0e2
-        task->pv->p2t_code = code - ABRT_P2_TASK_CODE_DONE;
09dd0e2
+        pv->p2t_code = code - ABRT_P2_TASK_CODE_DONE;
09dd0e2
         abrt_p2_task_change_status(task, ABRT_P2_TASK_STATUS_DONE);
09dd0e2
     }
09dd0e2
     else if (abrt_p2_task_is_cancelled(task))
09dd0e2
@@ -263,8 +310,8 @@ static void abrt_p2_task_finish_gtask(GObject *source_object,
09dd0e2
         abrt_p2_task_change_status(task, ABRT_P2_TASK_STATUS_FAILED);
09dd0e2
     }
09dd0e2
 
09dd0e2
-    g_object_unref(task->pv->p2t_cancellable);
09dd0e2
-    task->pv->p2t_cancellable = NULL;
09dd0e2
+    g_object_unref(pv->p2t_cancellable);
09dd0e2
+    pv->p2t_cancellable = NULL;
09dd0e2
 }
09dd0e2
 
09dd0e2
 static void abrt_p2_task_thread(GTask *task,
09dd0e2
@@ -289,8 +336,12 @@ void abrt_p2_task_start(AbrtP2Task *task,
09dd0e2
             GVariant *options,
09dd0e2
             GError **error)
09dd0e2
 {
09dd0e2
-    if (   task->pv->p2t_status != ABRT_P2_TASK_STATUS_NEW
09dd0e2
-        && task->pv->p2t_status != ABRT_P2_TASK_STATUS_STOPPED)
09dd0e2
+    AbrtP2TaskPrivate *pv;
09dd0e2
+
09dd0e2
+    pv = abrt_p2_task_get_instance_private(task);
09dd0e2
+
09dd0e2
+    if (   pv->p2t_status != ABRT_P2_TASK_STATUS_NEW
09dd0e2
+        && pv->p2t_status != ABRT_P2_TASK_STATUS_STOPPED)
09dd0e2
     {
09dd0e2
         g_set_error(error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED,
09dd0e2
                     "Cannot start task that is not new or stopped");
09dd0e2
@@ -302,9 +353,9 @@ void abrt_p2_task_start(AbrtP2Task *task,
09dd0e2
     if (*error != NULL)
09dd0e2
         return;
09dd0e2
 
09dd0e2
-    task->pv->p2t_cancellable = g_cancellable_new();
09dd0e2
+    pv->p2t_cancellable = g_cancellable_new();
09dd0e2
     GTask *gtask = g_task_new(task,
09dd0e2
-                              task->pv->p2t_cancellable,
09dd0e2
+                              pv->p2t_cancellable,
09dd0e2
                               abrt_p2_task_finish_gtask,
09dd0e2
                               NULL);
09dd0e2
 
09dd0e2
diff --git a/src/dbus/abrt_problems2_task.h b/src/dbus/abrt_problems2_task.h
09dd0e2
index 71f765d9..717af47b 100644
09dd0e2
--- a/src/dbus/abrt_problems2_task.h
09dd0e2
+++ b/src/dbus/abrt_problems2_task.h
09dd0e2
@@ -45,21 +45,12 @@ G_BEGIN_DECLS
09dd0e2
 GType abrt_p2_task_get_type (void);
09dd0e2
 
09dd0e2
 #define ABRT_TYPE_P2_TASK (abrt_p2_task_get_type ())
09dd0e2
-#define ABRT_P2_TASK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ABRT_TYPE_P2_TASK, AbrtP2Task))
09dd0e2
-#define ABRT_P2_TASK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ABRT_TYPE_P2_TASK, AbrtP2TaskClass))
09dd0e2
-#define ABRT_IS_P2_TASK(obj)(G_TYPE_CHECK_INSTANCE_TYPE ((obj), ABRT_TYPE_P2_TASK))
09dd0e2
-#define ABRT_IS_P2_TASK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ABRT_TYPE_P2_TASK))
09dd0e2
-#define ABRT_P2_TASK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ABRT_TYPE_P2_TASK, AbrtP2TaskClass))
09dd0e2
+G_DECLARE_DERIVABLE_TYPE(AbrtP2Task, abrt_p2_task, ABRT, P2_TASK, GObject)
09dd0e2
 
09dd0e2
 typedef struct _AbrtP2Task        AbrtP2Task;
09dd0e2
 typedef struct _AbrtP2TaskClass   AbrtP2TaskClass;
09dd0e2
 typedef struct _AbrtP2TaskPrivate AbrtP2TaskPrivate;
09dd0e2
 
09dd0e2
-static inline void glib_autoptr_cleanup_AbrtP2Task(AbrtP2Task **task)
09dd0e2
-{
09dd0e2
-    glib_autoptr_cleanup_GObject((GObject **)task);
09dd0e2
-}
09dd0e2
-
09dd0e2
 typedef enum {
09dd0e2
     ABRT_P2_TASK_STATUS_NEW,
09dd0e2
     ABRT_P2_TASK_STATUS_RUNNING,
09dd0e2
@@ -96,21 +87,6 @@ struct _AbrtP2TaskClass
09dd0e2
     gpointer padding[12];
09dd0e2
 };
09dd0e2
 
09dd0e2
-struct _AbrtP2TaskPrivate
09dd0e2
-{
09dd0e2
-    gint32 p2t_status;
09dd0e2
-    GVariant *p2t_details;
09dd0e2
-    GVariant *p2t_results;
09dd0e2
-    gint32 p2t_code;
09dd0e2
-    GCancellable *p2t_cancellable;
09dd0e2
-};
09dd0e2
-
09dd0e2
-struct _AbrtP2Task
09dd0e2
-{
09dd0e2
-    GObject parent_instance;
09dd0e2
-    AbrtP2TaskPrivate *pv;
09dd0e2
-};
09dd0e2
-
09dd0e2
 AbrtP2TaskStatus abrt_p2_task_status(AbrtP2Task *task);
09dd0e2
 
09dd0e2
 /* Returns task details in form of key-value entries.
09dd0e2
-- 
09dd0e2
2.20.1
09dd0e2