Fix some more Gtk::Menu memory leaks
authorRobin Gareus <robin@gareus.org>
Fri, 8 Mar 2019 00:44:30 +0000 (01:44 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 8 Mar 2019 00:44:51 +0000 (01:44 +0100)
gtk2_ardour/route_params_ui.cc
gtk2_ardour/visibility_group.cc
gtk2_ardour/visibility_group.h

index 1e19f1c7df0933068b7134645f4cd24a7cf3f5ee..64e2cba24bcd710f3663c749175fd8f8ab67139c 100644 (file)
@@ -146,6 +146,7 @@ RouteParams_UI::RouteParams_UI ()
 
 RouteParams_UI::~RouteParams_UI ()
 {
+       delete track_menu;
 }
 
 void
index 10d5f98b730c34cdb5527031c2b0fde2c4be2386..0090e39019918c11d471184217e18083a9b72966 100644 (file)
@@ -25,6 +25,7 @@
 #include "pbd/strsplit.h"
 #include "pbd/xml++.h"
 
+#include "ardour_ui.h"
 #include "visibility_group.h"
 
 #include "pbd/i18n.h"
@@ -69,17 +70,9 @@ VisibilityGroup::button_press_event (GdkEventButton* ev)
                return false;
        }
 
-       /* memory leak: Gtk::Menu* */
-       menu()->popup (1, ev->time);
-       return true;
-}
-
-Gtk::Menu*
-VisibilityGroup::menu ()
-{
        using namespace Gtk::Menu_Helpers;
 
-       Gtk::Menu* m = Gtk::manage (new Gtk::Menu);
+       Gtk::Menu* m = ARDOUR_UI::instance()->shared_popup_menu ();
        MenuList& items = m->items ();
 
        for (vector<Member>::iterator i = _members.begin(); i != _members.end(); ++i) {
@@ -89,9 +82,11 @@ VisibilityGroup::menu ()
                j->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &VisibilityGroup::toggle), i));
        }
 
-       return m;
+       m->popup (1, ev->time);
+       return true;
 }
 
+
 /** @return true if the member should be visible, even taking into account any override functor */
 bool
 VisibilityGroup::should_actually_be_visible (Member const & m) const
index d95497d9edec65281bfbf6c927e30447ca94bb08..e8a554fe979392e93cfc4a0b029fda9f54d6fa48 100644 (file)
@@ -86,8 +86,6 @@ 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;