add left/right side trim cursors and use them for region trimming, as appropriate
[ardour.git] / libs / ardour / session_rtevents.cc
index 5def97941f7eefa856f86fbd4cb403368d3364b0..921a6348ebdd87cfc7fd507cf2700ceaf4203e56 100644 (file)
@@ -129,6 +129,24 @@ Session::rt_set_mute (boost::shared_ptr<RouteList> rl, bool yn, bool /*group_ove
        set_dirty();
 }
 
+void
+Session::set_solo_isolated (boost::shared_ptr<RouteList> rl, bool yn, SessionEvent::RTeventCallback after, bool group_override)
+{
+       queue_event (get_rt_event (rl, yn, after, group_override, &Session::rt_set_solo_isolated));
+}
+
+void
+Session::rt_set_solo_isolated (boost::shared_ptr<RouteList> rl, bool yn, bool /*group_override*/)
+{
+       for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
+               if (!(*i)->is_master() && !(*i)->is_monitor() && !(*i)->is_hidden()) {
+                       (*i)->set_solo_isolated (yn, this);
+               }
+       }
+       
+       set_dirty();
+}
+
 void
 Session::set_record_enable (boost::shared_ptr<RouteList> rl, bool yn, SessionEvent::RTeventCallback after, bool group_override)
 {
@@ -163,7 +181,7 @@ Session::process_rtop (SessionEvent* ev)
        ev->rt_slot ();
 
        if (ev->event_loop) {
-               ev->event_loop->call_slot (boost::bind (ev->rt_return, ev));
+               ev->event_loop->call_slot (MISSING_INVALIDATOR, boost::bind (ev->rt_return, ev));
        } else {
                warning << string_compose ("programming error: %1", X_("Session RT event queued from thread without a UI - cleanup in RT thread!")) << endmsg;
                ev->rt_return (ev);