X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_profile_manager.cc;h=932b99057a89b6c63c56c7c82dd01d4169c10190;hb=a2108090cf9d8a98d4f681a1f0178c2a59deaf76;hp=4a10d3dfa832b035e220d171f164f4ff1ae0b0f6;hpb=23e7cf10191270d70357ccf0ed9294f020c7b7ab;p=ardour.git diff --git a/libs/ardour/export_profile_manager.cc b/libs/ardour/export_profile_manager.cc index 4a10d3dfa8..932b99057a 100644 --- a/libs/ardour/export_profile_manager.cc +++ b/libs/ardour/export_profile_manager.cc @@ -23,7 +23,7 @@ #include #include -#include +#include "pbd/gstdio_compat.h" #include #include @@ -43,6 +43,7 @@ #include "ardour/export_failed.h" #include "ardour/directory_names.h" #include "ardour/filename_extensions.h" +#include "ardour/profile.h" #include "ardour/route.h" #include "ardour/session.h" #include "ardour/broadcast_info.h" @@ -114,17 +115,22 @@ ExportProfileManager::ExportProfileManager (Session & s, ExportType type) ExportProfileManager::~ExportProfileManager () { - XMLNode * instant_xml (new XMLNode (xml_node_name)); - serialize_profile (*instant_xml); - session.add_instant_xml (*instant_xml, false); + XMLNode * extra_xml (new XMLNode (xml_node_name)); + serialize_profile (*extra_xml); + session.add_extra_xml (*extra_xml); } void ExportProfileManager::load_profile () { - XMLNode * instant_node = session.instant_xml (xml_node_name); - if (instant_node) { - set_state (*instant_node); + XMLNode * extra_node = session.extra_xml (xml_node_name); + /* Legacy sessions used Session instant.xml for this */ + if (!extra_node) { + extra_node = session.instant_xml (xml_node_name); + } + + if (extra_node) { + set_state (*extra_node); } else { XMLNode empty_node (xml_node_name); set_state (empty_node); @@ -387,7 +393,14 @@ ExportProfileManager::init_timespans (XMLNodeList nodes) timespans.push_back (state); // Add session as default selection - Location * session_range = session.locations()->session_range_location(); + Location * session_range; + + if (Profile->get_trx()) { + session_range = (session.get_play_loop () ? session.locations()->auto_loop_location () : session.locations()->session_range_location()); + } else { + session_range = session.locations()->session_range_location(); + } + if (!session_range) { return false; } ExportTimespanPtr timespan = handler->add_timespan(); @@ -470,11 +483,15 @@ ExportProfileManager::update_ranges () { return; } - /* Session */ - Location * session_range = session.locations()->session_range_location(); - if (session_range) { - ranges->push_back (session_range); + /* Loop */ + if (session.locations()->auto_loop_location ()) { + ranges->push_back (session.locations()->auto_loop_location ()); + } + + /* Session */ + if (session.locations()->session_range_location()) { + ranges->push_back (session.locations()->session_range_location()); } /* Selection */ @@ -772,7 +789,7 @@ std::string ExportProfileManager::get_sample_filename_for_format (ExportFilenamePtr filename, ExportFormatSpecPtr format) { assert (format); - + if (channel_configs.empty()) { return ""; } std::list filenames; @@ -812,7 +829,7 @@ ExportProfileManager::get_warnings () if (!channel_configs.empty ()) { channel_config_state = channel_configs.front(); } - + TimespanStatePtr timespan_state = timespans.front(); /*** Check "global" config ***/ @@ -850,7 +867,7 @@ ExportProfileManager::get_warnings () check_config (warnings, timespan_state, channel_config_state, *format_it, *filename_it); } } - + return warnings; }