Leakage of Toolbar-Related Menu Items
- From: Morten Welinder <mortenw gnome org>
- To: "Gtk+ Developers" <gtk-devel-list gnome org>
- Subject: Leakage of Toolbar-Related Menu Items
- Date: Thu, 23 Jun 2011 09:49:16 -0400
Currently Gtk applications leak quite a lot when menu items are created
for GtkToolItems. This is because circular links prevent the tear-down:
+-----------+ (menu_item) +-----------+ (child) +-------------+
|GtkToolItem|--------------->|GtkMenuItem|--------------->|GtkAccelLabel|
+-----------+ +-----------+ +-------------+
^ |
| (accel_widget) |
+-----------------------------+
(That is going to look weird unless you use a fixed-width font.)
GtkToolItem is not a GtkWidget, so it doesn't receive the "destroy"
signal that normally helps tear down circular links.
This is bug 645483 with no responses. I have contacted the author
who introduced the circularity, jpetersen openismus com, but I
have received no response.
The question is what should be done about this.
1. Make the accel_widget link a weak ref.
2. Declare a destroy signal on GtkToolItem and make sure it gets
sent by containers of such items, i.e., something parallel to
GtkWidget's destroy.
3. Destroy the menuitem in GtkToolItem's dispose handler. (And
in one other place where we disown the current menu item.)
I don't really like version 1 because there are simply too many reasons
why the menu item would have extra refs. That is, it would not work in
general.
Other options?
Morten
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]