From 0a364fd9910d999b6954a8ccf54fcdae7c7c1f21 Mon Sep 17 00:00:00 2001 From: Sakari Bergen Date: Sun, 26 May 2013 20:25:27 +0300 Subject: Remove special handling of session range in export. Fixes things when the session range is renamed. --- libs/ardour/ardour/export_profile_manager.h | 6 +---- libs/ardour/export_profile_manager.cc | 39 +++++++++++++++++------------ 2 files changed, 24 insertions(+), 21 deletions(-) (limited to 'libs') diff --git a/libs/ardour/ardour/export_profile_manager.h b/libs/ardour/ardour/export_profile_manager.h index 82b32fb032..424e0fe163 100644 --- a/libs/ardour/ardour/export_profile_manager.h +++ b/libs/ardour/ardour/export_profile_manager.h @@ -122,16 +122,13 @@ class ExportProfileManager TimespanListPtr timespans; TimeFormat time_format; - boost::shared_ptr session_range; boost::shared_ptr selection_range; boost::shared_ptr ranges; - TimespanState (boost::shared_ptr session_range, - boost::shared_ptr selection_range, + TimespanState (boost::shared_ptr selection_range, boost::shared_ptr ranges) : timespans (new TimespanList ()) , time_format (Timecode) - , session_range (session_range) , selection_range (selection_range) , ranges (ranges) {} @@ -157,7 +154,6 @@ class ExportProfileManager void update_ranges (); - boost::shared_ptr session_range; boost::shared_ptr selection_range; boost::shared_ptr ranges; diff --git a/libs/ardour/export_profile_manager.cc b/libs/ardour/export_profile_manager.cc index 388ffe2508..bc4b31e324 100644 --- a/libs/ardour/export_profile_manager.cc +++ b/libs/ardour/export_profile_manager.cc @@ -61,7 +61,6 @@ ExportProfileManager::ExportProfileManager (Session & s, ExportType type) , handler (s.get_export_handler()) , session (s) - , session_range (new Location (s)) , ranges (new LocationList ()) , single_range_mode (false) @@ -385,13 +384,16 @@ ExportProfileManager::init_timespans (XMLNodeList nodes) } if (timespans.empty()) { - TimespanStatePtr state (new TimespanState (session_range, selection_range, ranges)); + TimespanStatePtr state (new TimespanState (selection_range, ranges)); timespans.push_back (state); // Add session as default selection + Location * session_range = session.locations()->session_range_location(); + if (!session_range) { return false; } + ExportTimespanPtr timespan = handler->add_timespan(); timespan->set_name (session_range->name()); - timespan->set_range_id ("session"); + timespan->set_range_id (session_range->id().to_s()); timespan->set_range (session_range->start(), session_range->end()); state->timespans->push_back (timespan); return false; @@ -403,7 +405,7 @@ ExportProfileManager::init_timespans (XMLNodeList nodes) ExportProfileManager::TimespanStatePtr ExportProfileManager::deserialize_timespan (XMLNode & root) { - TimespanStatePtr state (new TimespanState (session_range, selection_range, ranges)); + TimespanStatePtr state (new TimespanState (selection_range, ranges)); XMLProperty const * prop; XMLNodeList spans = root.children ("Range"); @@ -413,17 +415,22 @@ ExportProfileManager::deserialize_timespan (XMLNode & root) if (!prop) { continue; } string id = prop->value(); + Location * location = 0; for (LocationList::iterator it = ranges->begin(); it != ranges->end(); ++it) { - if ((!id.compare ("session") && *it == session_range.get()) || - (!id.compare ("selection") && *it == selection_range.get()) || - (!id.compare ((*it)->id().to_s()))) { - ExportTimespanPtr timespan = handler->add_timespan(); - timespan->set_name ((*it)->name()); - timespan->set_range_id (id); - timespan->set_range ((*it)->start(), (*it)->end()); - state->timespans->push_back (timespan); + if ((id == "selection" && *it == selection_range.get()) || + (id == (*it)->id().to_s())) { + location = *it; + break; } } + + if (!location) { continue; } + + ExportTimespanPtr timespan = handler->add_timespan(); + timespan->set_name (location->name()); + timespan->set_range_id (location->id().to_s()); + timespan->set_range (location->start(), location->end()); + state->timespans->push_back (timespan); } if ((prop = root.property ("format"))) { @@ -440,7 +447,6 @@ ExportProfileManager::serialize_timespan (TimespanStatePtr state) XMLNode * span; update_ranges (); - for (TimespanList::iterator it = state->timespans->begin(); it != state->timespans->end(); ++it) { if ((span = root.add_child ("Range"))) { span->add_property ("id", (*it)->range_id()); @@ -463,9 +469,10 @@ ExportProfileManager::update_ranges () { /* Session */ - session_range->set_name (_("Session")); - session_range->set (session.current_start_frame(), session.current_end_frame()); - ranges->push_back (session_range.get()); + Location * session_range = session.locations()->session_range_location(); + if (session_range) { + ranges->push_back (session_range); + } /* Selection */ -- cgit v1.2.3