diff options
author | Robin Gareus <robin@gareus.org> | 2019-03-07 17:02:12 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-03-07 23:50:50 +0100 |
commit | 7b96fa1c5e99e054f43ca3272d21ae955bfa3443 (patch) | |
tree | 67f2e5efd9ce1890ad3a6444cb114341576d26d3 /gtk2_ardour/meter_strip.cc | |
parent | 12a415f0772048f8a38a66a037b024223bc7bbc0 (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/meter_strip.cc')
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index e219a70d1c..ea6ace2af1 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -40,6 +40,7 @@ #include "widgets/tooltips.h" #include "gui_thread.h" +#include "ardour_ui.h" #include "ardour_window.h" #include "ui_config.h" #include "utils.h" @@ -837,7 +838,7 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev) { using namespace Gtk::Menu_Helpers; - Gtk::Menu* m = manage (new Menu); + Gtk::Menu* m = ARDOUR_UI::instance()->shared_popup_menu (); MenuList& items = m->items (); RadioMenuItem::Group group; @@ -888,7 +889,7 @@ MeterStrip::popup_name_label_menu (GdkEventButton* ev) { using namespace Gtk::Menu_Helpers; - Gtk::Menu* m = manage (new Menu); + Gtk::Menu* m = ARDOUR_UI::instance()->shared_popup_menu (); MenuList& items = m->items (); RadioMenuItem::Group group; |