summaryrefslogtreecommitdiff
path: root/gtk2_ardour/visibility_group.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-03-07 17:02:12 +0100
committerRobin Gareus <robin@gareus.org>2019-03-07 23:50:50 +0100
commit7b96fa1c5e99e054f43ca3272d21ae955bfa3443 (patch)
tree67f2e5efd9ce1890ad3a6444cb114341576d26d3 /gtk2_ardour/visibility_group.h
parent12a415f0772048f8a38a66a037b024223bc7bbc0 (diff)
Fix some Gtk::Menu memory leaks
A Gtk::manage()d widget will be deleted when its parent container is destroyed. Top-level context menus are not inside a container and hence need to be manually deallocated. The solution here is to use a shared Gtk::Menu pointer that is centrally de/re-allocated. This works because the GUI is single-threaded and at most one context menu is visible at a time.
Diffstat (limited to 'gtk2_ardour/visibility_group.h')
-rw-r--r--gtk2_ardour/visibility_group.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/gtk2_ardour/visibility_group.h b/gtk2_ardour/visibility_group.h
index ce1adecdd4..d95497d9ed 100644
--- a/gtk2_ardour/visibility_group.h
+++ b/gtk2_ardour/visibility_group.h
@@ -45,7 +45,6 @@ public:
boost::function<boost::optional<bool> ()> = 0
);
- Gtk::Menu* menu ();
Gtk::Widget* list_view ();
bool button_press_event (GdkEventButton *);
void update ();
@@ -87,6 +86,8 @@ private:
void update_list_view ();
bool should_actually_be_visible (Member const &) const;
+ Gtk::Menu* menu ();
+
std::vector<Member> _members;
std::string _xml_property_name;
ModelColumns _model_columns;