diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index f69b81c160..2637cbb8c6 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1507,6 +1507,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop typedef std::map > SourceMap; private: + void reset_write_sources (bool mark_write_complete, bool force = false); + SourceMap sources; private: diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 2cef90ed3c..4f5a60f613 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1793,6 +1793,7 @@ Session::set_frame_rate (framecnt_t frames_per_second) clear_clicks (); + reset_write_sources (false); // XXX we need some equivalent to this, somehow // SndFileSource::setup_standard_crossfades (frames_per_second); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index ee8c6663c7..e8c5a74ea6 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1903,6 +1903,18 @@ Session::get_sources_as_xml () return *node; } +void +Session::reset_write_sources (bool mark_write_complete, bool force) +{ + boost::shared_ptr rl = routes.reader(); + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { + boost::shared_ptr tr = boost::dynamic_pointer_cast (*i); + if (tr) { + tr->reset_write_sources(mark_write_complete, force); + } + } +} + int Session::load_sources (const XMLNode& node) {