Bonjour,
J'aimerais savoir quand est-ce que les GtkWidgets sont détruits dans un programme.
J'ai un widget YaogcFrame qui dérive (directement) de GtkDrawingArea, celui-ci contient une donnée membre pango_l que je veux détruire en même temps que mon widget.
J'ai donc fait ceci:
J'ai placé un breakpoint dans la fonction yaogc_frame_finalize, et à la fin du programme celle-ci n'est jamais appelée, sauf si je fais appel explicitement à g_object_unref.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 static void yaogc_frame_finalize (GObject *object) { YaogcFrame *frame = YAOGC_FRAME (object); if (frame->priv->pango_l) { g_object_unref (frame->priv->pango_l); frame->priv->pango_l = NULL; } /* Chaining up */ G_OBJECT_CLASS (yaogc_frame_parent_class)->finalize (object); } static void yaogc_frame_class_init (YaogcFrameClass *frame_class) { GObjectClass *object_class = G_OBJECT_CLASS (frame_class); /* [...] */ object_class->finalize = yaogc_frame_finalize; /* [...] */ }
Du coup, je me demande quand est-ce que les widgets sont détruits dans un programme
Si quelqu'un a une idée, ça serait sympa
Merci
References: Object destruction
Partager