mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 15:54:57 +01:00
Fix some memory leaks in the plugin menu.
git-svn-id: svn://localhost/ardour2/branches/3.0@6091 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
14b993b189
commit
0aaa08a3d2
3 changed files with 13 additions and 16 deletions
|
|
@ -72,7 +72,6 @@ PluginSelector::PluginSelector (PluginManager *mgr)
|
||||||
|
|
||||||
manager = mgr;
|
manager = mgr;
|
||||||
session = 0;
|
session = 0;
|
||||||
_menu = 0;
|
|
||||||
in_row_change = false;
|
in_row_change = false;
|
||||||
|
|
||||||
plugin_model = Gtk::ListStore::create (plugin_columns);
|
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()
|
PluginSelector::plugin_menu()
|
||||||
{
|
{
|
||||||
PluginInfoList all_plugs;
|
PluginInfoList all_plugs;
|
||||||
|
|
@ -581,27 +581,25 @@ PluginSelector::plugin_menu()
|
||||||
|
|
||||||
using namespace Menu_Helpers;
|
using namespace Menu_Helpers;
|
||||||
|
|
||||||
if (!_menu) {
|
Menu* menu = manage (new Menu());
|
||||||
_menu = new Menu();
|
menu->set_name("ArdourContextMenu");
|
||||||
_menu->set_name("ArdourContextMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuList& items = _menu->items();
|
MenuList& items = menu->items();
|
||||||
items.clear ();
|
items.clear ();
|
||||||
|
|
||||||
Gtk::Menu* favs = create_favs_menu(all_plugs);
|
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 (MenuElem (_("Plugin Manager"), mem_fun (*this, &PluginSelector::show_manager)));
|
||||||
items.push_back (SeparatorElem ());
|
items.push_back (SeparatorElem ());
|
||||||
|
|
||||||
Menu* by_creator = create_by_creator_menu(all_plugs);
|
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);
|
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*
|
Gtk::Menu*
|
||||||
|
|
@ -655,7 +653,7 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs)
|
||||||
submenu = x->second;
|
submenu = x->second;
|
||||||
} else {
|
} else {
|
||||||
submenu = new Gtk::Menu;
|
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));
|
creator_submenu_map.insert (pair<Glib::ustring,Menu*> (creator, submenu));
|
||||||
submenu->set_name("ArdourContextMenu");
|
submenu->set_name("ArdourContextMenu");
|
||||||
}
|
}
|
||||||
|
|
@ -691,7 +689,7 @@ PluginSelector::create_by_category_menu (ARDOUR::PluginInfoList& all_plugs)
|
||||||
submenu = x->second;
|
submenu = x->second;
|
||||||
} else {
|
} else {
|
||||||
submenu = new Gtk::Menu;
|
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));
|
category_submenu_map.insert (pair<Glib::ustring,Menu*> (category, submenu));
|
||||||
submenu->set_name("ArdourContextMenu");
|
submenu->set_name("ArdourContextMenu");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ class PluginSelector : public ArdourDialog
|
||||||
void set_session (ARDOUR::Session*);
|
void set_session (ARDOUR::Session*);
|
||||||
void on_show ();
|
void on_show ();
|
||||||
|
|
||||||
Gtk::Menu& plugin_menu ();
|
Gtk::Menu* plugin_menu ();
|
||||||
void show_manager ();
|
void show_manager ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -132,7 +132,6 @@ class PluginSelector : public ArdourDialog
|
||||||
bool in_row_change;
|
bool in_row_change;
|
||||||
|
|
||||||
void plugin_chosen_from_menu (const ARDOUR::PluginInfoPtr&);
|
void plugin_chosen_from_menu (const ARDOUR::PluginInfoPtr&);
|
||||||
Gtk::Menu* _menu;
|
|
||||||
|
|
||||||
Gtk::Menu* create_favs_menu (ARDOUR::PluginInfoList&);
|
Gtk::Menu* create_favs_menu (ARDOUR::PluginInfoList&);
|
||||||
Gtk::Menu* create_by_creator_menu (ARDOUR::PluginInfoList&);
|
Gtk::Menu* create_by_creator_menu (ARDOUR::PluginInfoList&);
|
||||||
|
|
|
||||||
|
|
@ -309,7 +309,7 @@ ProcessorBox::show_processor_menu (gint arg)
|
||||||
Gtk::MenuItem* plugin_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/processormenu/newplugin"));
|
Gtk::MenuItem* plugin_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/processormenu/newplugin"));
|
||||||
|
|
||||||
if (plugin_menu_item) {
|
if (plugin_menu_item) {
|
||||||
plugin_menu_item->set_submenu (_get_plugin_selector()->plugin_menu());
|
plugin_menu_item->set_submenu (*_get_plugin_selector()->plugin_menu());
|
||||||
}
|
}
|
||||||
|
|
||||||
paste_action->set_sensitive (!_rr_selection.processors.empty());
|
paste_action->set_sensitive (!_rr_selection.processors.empty());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue