after changing session SR, reset all write sources to use new rate
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 12 May 2015 14:16:26 +0000 (10:16 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 29 Jun 2015 18:18:12 +0000 (14:18 -0400)
libs/ardour/session.cc
libs/ardour/session_state.cc

index d88b3b8408f8b91818376bd738f8de2378562e50..6fdf21a3929b8d977b94f7b0dfddfbefdabc0fb9 100644 (file)
@@ -1924,7 +1924,8 @@ Session::set_frame_rate (framecnt_t frames_per_second)
        sync_time_vars();
 
        clear_clicks ();
-
+       reset_write_sources (false);
+       
        // XXX we need some equivalent to this, somehow
        // SndFileSource::setup_standard_crossfades (frames_per_second);
 
@@ -5012,12 +5013,12 @@ void
 Session::reset_native_file_format ()
 {
        boost::shared_ptr<RouteList> rl = routes.reader ();
+
        for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
                boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
                if (tr) {
                        /* don't save state as we do this, there's no point
                         */
-
                        _state_of_the_state = StateOfTheState (_state_of_the_state|InCleanup);
                        tr->reset_write_sources (false);
                        _state_of_the_state = StateOfTheState (_state_of_the_state & ~InCleanup);
index eca01cbe9995313436d7cdf069217503fb87c3c0..f0045fb0c298b8443870bd8ad0c7e153ca6d123c 100644 (file)
@@ -1908,17 +1908,15 @@ Session::get_sources_as_xml ()
 void
 Session::reset_write_sources (bool mark_write_complete, bool force)
 {
-    boost::shared_ptr<RouteList> rl = routes.reader();
-    for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
-        boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
-        if (tr) {
-                       
-                       // block state saving
+       boost::shared_ptr<RouteList> rl = routes.reader();
+       for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
+               boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
+               if (tr) {
                        _state_of_the_state = StateOfTheState (_state_of_the_state|InCleanup);
                        tr->reset_write_sources(mark_write_complete, force);
                        _state_of_the_state = StateOfTheState (_state_of_the_state & ~InCleanup);
-        }
-    }
+               }
+       }
 }
 
 int