From 412251e72f33525c3f5d0a1a3ec3843b9b79131e Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Sun, 18 Feb 2018 10:24:23 +0100
Subject: Destroyed panel resources on exit.

---
 ChangeLog              |  5 +++++
 src/gui/panels/panel.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 6259b01..9275256 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+18-02-18  Cyrille Bagard <nocbos@gmail.com>
+
+	* src/gui/panels/panel.c:
+	Destroy panel resources on exit.
+
 18-02-16  Cyrille Bagard <nocbos@gmail.com>
 
 	* plugins/elf/dynamic.c:
diff --git a/src/gui/panels/panel.c b/src/gui/panels/panel.c
index e70d57b..6536977 100644
--- a/src/gui/panels/panel.c
+++ b/src/gui/panels/panel.c
@@ -45,6 +45,12 @@ static void g_panel_item_init(GPanelItem *);
 /* Procède à l'initialisation de l'interface de rassemblement. */
 static void g_panel_item_dockable_interface_init(GtkDockableInterface *);
 
+/* Supprime toutes les références externes. */
+static void g_panel_item_dispose(GPanelItem *);
+
+/* Procède à la libération totale de la mémoire. */
+static void g_panel_item_finalize(GPanelItem *);
+
 /* Fournit le nom court du composant encapsulable. */
 static const char *gtk_panel_item_get_name(const GPanelItem *);
 
@@ -78,6 +84,13 @@ G_DEFINE_TYPE_WITH_CODE(GPanelItem, g_panel_item, G_TYPE_EDITOR_ITEM,
 
 static void g_panel_item_class_init(GPanelItemClass *klass)
 {
+    GObjectClass *object;                   /* Autre version de la classe  */
+
+    object = G_OBJECT_CLASS(klass);
+
+    object->dispose = (GObjectFinalizeFunc/* ! */)g_panel_item_dispose;
+    object->finalize = (GObjectFinalizeFunc)g_panel_item_finalize;
+
     g_signal_new("dock-request",
                  G_TYPE_PANEL_ITEM,
                  G_SIGNAL_RUN_LAST,
@@ -145,6 +158,46 @@ static void g_panel_item_dockable_interface_init(GtkDockableInterface *iface)
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : item = instance d'objet GLib à traiter.                      *
+*                                                                             *
+*  Description : Supprime toutes les références externes.                     *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void g_panel_item_dispose(GPanelItem *item)
+{
+    G_OBJECT_CLASS(g_panel_item_parent_class)->dispose(G_OBJECT(item));
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : item = instance d'objet GLib à traiter.                      *
+*                                                                             *
+*  Description : Procède à la libération totale de la mémoire.                *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void g_panel_item_finalize(GPanelItem *item)
+{
+    free(item->path);
+
+    G_OBJECT_CLASS(g_panel_item_parent_class)->finalize(G_OBJECT(item));
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : personality = nature du panneau à mettre en place.           *
 *                name    = nom associé à l'élément.                           *
 *                lname   = description longue du panneau.                     *
-- 
cgit v0.11.2-87-g4458