summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_selector.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-15 17:19:38 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-15 17:19:38 +0000
commit0aaa08a3d260539e2c193082d7c1ce2967a8e148 (patch)
tree31ce2e93dccb9248b809921c1c37fe9823f44973 /gtk2_ardour/plugin_selector.cc
parent14b993b1890d106a18dc2d1d489070cc806273f5 (diff)
Fix some memory leaks in the plugin menu.
git-svn-id: svn://localhost/ardour2/branches/3.0@6091 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/plugin_selector.cc')
-rw-r--r--gtk2_ardour/plugin_selector.cc24
1 files changed, 11 insertions, 13 deletions
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index c2f81f4981..f50c97e417 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -72,7 +72,6 @@ PluginSelector::PluginSelector (PluginManager *mgr)
manager = mgr;
session = 0;
- _menu = 0;
in_row_change = false;
plugin_model = Gtk::ListStore::create (plugin_columns);
@@ -563,7 +562,8 @@ struct PluginMenuCompareByCategory {
}
};
-Gtk::Menu&
+/** @return a Gtk::manage()d menu */
+Gtk::Menu*
PluginSelector::plugin_menu()
{
PluginInfoList all_plugs;
@@ -581,27 +581,25 @@ PluginSelector::plugin_menu()
using namespace Menu_Helpers;
- if (!_menu) {
- _menu = new Menu();
- _menu->set_name("ArdourContextMenu");
- }
+ Menu* menu = manage (new Menu());
+ menu->set_name("ArdourContextMenu");
- MenuList& items = _menu->items();
+ MenuList& items = menu->items();
items.clear ();
Gtk::Menu* favs = create_favs_menu(all_plugs);
- items.push_back (MenuElem (_("Favorites"), *favs));
+ items.push_back (MenuElem (_("Favorites"), *manage (favs)));
items.push_back (MenuElem (_("Plugin Manager"), mem_fun (*this, &PluginSelector::show_manager)));
items.push_back (SeparatorElem ());
Menu* by_creator = create_by_creator_menu(all_plugs);
- items.push_back (MenuElem (_("By Creator"), *by_creator));
+ items.push_back (MenuElem (_("By Creator"), *manage (by_creator)));
Menu* by_category = create_by_category_menu(all_plugs);
- items.push_back (MenuElem (_("By Category"), *by_category));
+ items.push_back (MenuElem (_("By Category"), *manage (by_category)));
- return *_menu;
+ return menu;
}
Gtk::Menu*
@@ -655,7 +653,7 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs)
submenu = x->second;
} else {
submenu = new Gtk::Menu;
- by_creator_items.push_back (MenuElem (creator, *submenu));
+ by_creator_items.push_back (MenuElem (creator, *manage (submenu)));
creator_submenu_map.insert (pair<Glib::ustring,Menu*> (creator, submenu));
submenu->set_name("ArdourContextMenu");
}
@@ -691,7 +689,7 @@ PluginSelector::create_by_category_menu (ARDOUR::PluginInfoList& all_plugs)
submenu = x->second;
} else {
submenu = new Gtk::Menu;
- by_category_items.push_back (MenuElem (category, *submenu));
+ by_category_items.push_back (MenuElem (category, *manage (submenu)));
category_submenu_map.insert (pair<Glib::ustring,Menu*> (category, submenu));
submenu->set_name("ArdourContextMenu");
}