[tepl] SignalGroup: replace free() by clear() function



commit 143e584a827ce290f33b46dc383be2774e4af03d
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Wed Jul 26 14:31:25 2017 +0200

    SignalGroup: replace free() by clear() function
    
    To simplify the code (only one line needed), and improve type checking.

 tepl/tepl-application-window.c |   14 ++++----------
 tepl/tepl-notebook.c           |    6 ++----
 tepl/tepl-signal-group.c       |   11 ++++++++++-
 tepl/tepl-signal-group.h       |    2 +-
 4 files changed, 17 insertions(+), 16 deletions(-)
---
diff --git a/tepl/tepl-application-window.c b/tepl/tepl-application-window.c
index 7b997b3..1653338 100644
--- a/tepl/tepl-application-window.c
+++ b/tepl/tepl-application-window.c
@@ -349,12 +349,8 @@ tepl_application_window_dispose (GObject *object)
 
        tepl_window->priv->gtk_window = NULL;
        g_clear_object (&tepl_window->priv->tab_group);
-
-       g_clear_pointer (&tepl_window->priv->view_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
-
-       g_clear_pointer (&tepl_window->priv->buffer_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
+       _tepl_signal_group_clear (&tepl_window->priv->view_signal_group);
+       _tepl_signal_group_clear (&tepl_window->priv->buffer_signal_group);
 
        G_OBJECT_CLASS (tepl_application_window_parent_class)->dispose (object);
 }
@@ -534,8 +530,7 @@ active_view_notify_cb (TeplTabGroup          *tab_group,
 {
        TeplView *active_view;
 
-       g_clear_pointer (&tepl_window->priv->view_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
+       _tepl_signal_group_clear (&tepl_window->priv->view_signal_group);
 
        active_view = tepl_tab_group_get_active_view (tab_group);
 
@@ -571,8 +566,7 @@ active_buffer_notify_cb (TeplTabGroup          *tab_group,
 {
        TeplBuffer *active_buffer;
 
-       g_clear_pointer (&tepl_window->priv->buffer_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
+       _tepl_signal_group_clear (&tepl_window->priv->buffer_signal_group);
 
        active_buffer = tepl_tab_group_get_active_buffer (tab_group);
 
diff --git a/tepl/tepl-notebook.c b/tepl/tepl-notebook.c
index 68e1a0d..8832a11 100644
--- a/tepl/tepl-notebook.c
+++ b/tepl/tepl-notebook.c
@@ -114,8 +114,7 @@ tepl_notebook_dispose (GObject *object)
 {
        TeplNotebook *notebook = TEPL_NOTEBOOK (object);
 
-       g_clear_pointer (&notebook->priv->view_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
+       _tepl_signal_group_clear (&notebook->priv->view_signal_group);
 
        G_OBJECT_CLASS (tepl_notebook_parent_class)->dispose (object);
 }
@@ -142,8 +141,7 @@ check_active_tab_changed (TeplNotebook *notebook)
 
        notebook->priv->active_tab = active_tab;
 
-       g_clear_pointer (&notebook->priv->view_signal_group,
-                        (GDestroyNotify) _tepl_signal_group_free);
+       _tepl_signal_group_clear (&notebook->priv->view_signal_group);
 
        active_view = tepl_tab_group_get_active_view (TEPL_TAB_GROUP (notebook));
 
diff --git a/tepl/tepl-signal-group.c b/tepl/tepl-signal-group.c
index dfbd69c..2587407 100644
--- a/tepl/tepl-signal-group.c
+++ b/tepl/tepl-signal-group.c
@@ -58,7 +58,7 @@ _tepl_signal_group_new (GObject *object)
        return group;
 }
 
-void
+static void
 _tepl_signal_group_free (TeplSignalGroup *group)
 {
        if (group == NULL)
@@ -89,6 +89,15 @@ _tepl_signal_group_free (TeplSignalGroup *group)
 }
 
 void
+_tepl_signal_group_clear (TeplSignalGroup **group_pointer)
+{
+       g_return_if_fail (group_pointer != NULL);
+
+       _tepl_signal_group_free (*group_pointer);
+       *group_pointer = NULL;
+}
+
+void
 _tepl_signal_group_add (TeplSignalGroup *group,
                        gulong           signal_handler_id)
 {
diff --git a/tepl/tepl-signal-group.h b/tepl/tepl-signal-group.h
index e6f38a1..bb0671d 100644
--- a/tepl/tepl-signal-group.h
+++ b/tepl/tepl-signal-group.h
@@ -30,7 +30,7 @@ G_GNUC_INTERNAL
 TeplSignalGroup *      _tepl_signal_group_new          (GObject *object);
 
 G_GNUC_INTERNAL
-void                   _tepl_signal_group_free         (TeplSignalGroup *group);
+void                   _tepl_signal_group_clear        (TeplSignalGroup **group_pointer);
 
 G_GNUC_INTERNAL
 void                   _tepl_signal_group_add          (TeplSignalGroup *group,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]