diff options
author | Robin Gareus <robin@gareus.org> | 2019-03-07 16:40:16 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-03-07 23:50:32 +0100 |
commit | 3bc9281c312ec237b6365c023c5ef060f5788a6b (patch) | |
tree | 12969680c5f11c2216bc3746f701c6906f8a2b21 /gtk2_ardour/processor_box.cc | |
parent | 204d7bf76ccccadea68a7bd3c8797b451a5c2971 (diff) |
Fix some Gtk::Menu related 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.
This adds explicit delete calls for menus where there is a
member variable reference to the Menu.
Diffstat (limited to 'gtk2_ardour/processor_box.cc')
-rw-r--r-- | gtk2_ardour/processor_box.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index f7c54a8bce..a31bfc9f73 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -715,7 +715,7 @@ ProcessorEntry::hide_things () } -Menu * +Menu* ProcessorEntry::build_controls_menu () { using namespace Menu_Helpers; @@ -778,7 +778,7 @@ ProcessorEntry::toggle_control_visibility (Control* c) _parent->update_gui_object_state (this); } -Menu * +Menu* ProcessorEntry::build_send_options_menu () { using namespace Menu_Helpers; @@ -2160,6 +2160,7 @@ ProcessorBox::show_processor_menu (int arg) aux_menu_item->set_submenu (*m); aux_menu_item->set_sensitive (true); } else { + delete m; /* stupid gtkmm: we need to pass a null reference here */ gtk_menu_item_set_submenu (aux_menu_item->gobj(), 0); aux_menu_item->set_sensitive (false); @@ -2174,6 +2175,7 @@ ProcessorBox::show_processor_menu (int arg) listen_menu_item->set_submenu (*m); listen_menu_item->set_sensitive (true); } else { + delete m; /* stupid gtkmm: we need to pass a null reference here */ gtk_menu_item_set_submenu (listen_menu_item->gobj(), 0); listen_menu_item->set_sensitive (false); @@ -2188,6 +2190,7 @@ ProcessorBox::show_processor_menu (int arg) remove_listen_menu_item->set_submenu (*m); remove_listen_menu_item->set_sensitive (true); } else { + delete m; /* stupid gtkmm: we need to pass a null reference here */ gtk_menu_item_set_submenu (remove_listen_menu_item->gobj(), 0); remove_listen_menu_item->set_sensitive (false); @@ -2213,6 +2216,7 @@ ProcessorBox::show_processor_menu (int arg) controls_menu_item->set_submenu (*m); controls_menu_item->set_sensitive (true); } else { + delete m; gtk_menu_item_set_submenu (controls_menu_item->gobj(), 0); controls_menu_item->set_sensitive (false); } @@ -2230,6 +2234,7 @@ ProcessorBox::show_processor_menu (int arg) send_menu_item->set_submenu (*m); send_menu_item->set_sensitive (true); } else { + delete m; gtk_menu_item_set_submenu (send_menu_item->gobj(), 0); send_menu_item->set_sensitive (false); } |