From 412251e72f33525c3f5d0a1a3ec3843b9b79131e Mon Sep 17 00:00:00 2001 From: Cyrille Bagard 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 + + * src/gui/panels/panel.c: + Destroy panel resources on exit. + 18-02-16 Cyrille Bagard * 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