+ _gui_track_selection_changed (rl.get(), save_list);
+}
+
+void
+MackieControlProtocol::_gui_track_selection_changed (ARDOUR::RouteNotificationList* rl, bool save_list)
+{
+
+ /* We need to keep a list of the most recently selected routes around,
+ but we are not allowed to keep shared_ptr<Route> unless we want to
+ handle the complexities of route deletion. So instead, the GUI sends
+ us a notification using weak_ptr<Route>, which we keep a copy
+ of. For efficiency's sake, however, we convert the weak_ptr's into
+ shared_ptr<Route> before passing them to however many surfaces (and
+ thus strips) that we have.
+ */
+
+ StrongRouteNotificationList srl;
+
+ for (ARDOUR::RouteNotificationList::const_iterator i = rl->begin(); i != rl->end(); ++i) {
+ boost::shared_ptr<ARDOUR::Route> r = (*i).lock();
+ if (r) {
+ srl.push_back (r);
+ }
+ }
+