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