Make session and master outs the default timespan and channel config for export
authorSakari Bergen <sakari.bergen@beatwaves.net>
Fri, 2 Apr 2010 22:57:02 +0000 (22:57 +0000)
committerSakari Bergen <sakari.bergen@beatwaves.net>
Fri, 2 Apr 2010 22:57:02 +0000 (22:57 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@6849 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/export_profile_manager.cc

index 244ec788aee952413163eea6214b6c55931ca729..53e6338a12836cd0e37c02f2822594c74ff1d3db 100644 (file)
@@ -36,6 +36,7 @@
 #include "ardour/export_handler.h"
 #include "ardour/export_failed.h"
 #include "ardour/filename_extensions.h"
+#include "ardour/route.h"
 #include "ardour/session.h"
 
 #include "i18n.h"
@@ -221,20 +222,20 @@ ExportProfileManager::load_preset_from_disk (PBD::sys::path const & path)
 bool
 ExportProfileManager::set_state (XMLNode const & root)
 {
-       return set_global_state (root) && set_local_state (root);
+       return set_global_state (root) & set_local_state (root);
 }
 
 bool
 ExportProfileManager::set_global_state (XMLNode const & root)
 {
-       return init_filenames (root.children ("ExportFilename")) &&
+       return init_filenames (root.children ("ExportFilename")) &
               init_formats (root.children ("ExportFormat"));
 }
 
 bool
 ExportProfileManager::set_local_state (XMLNode const & root)
 {
-       return init_timespans (root.children ("ExportTimespan")) &&
+       return init_timespans (root.children ("ExportTimespan")) &
               init_channel_configs (root.children ("ExportChannelConfiguration"));
 }
 
@@ -326,8 +327,15 @@ ExportProfileManager::init_timespans (XMLNodeList nodes)
        }
 
        if (timespans.empty()) {
-               TimespanStatePtr timespan (new TimespanState (session_range, selection_range, ranges));
-               timespans.push_back (timespan);
+               TimespanStatePtr state (new TimespanState (session_range, selection_range, ranges));
+               timespans.push_back (state);
+               
+               // Add session as default selection
+               TimespanPtr timespan = handler->add_timespan();
+               timespan->set_name (session_range->name());
+               timespan->set_range_id ("session");
+               timespan->set_range (session_range->start(), session_range->end());
+               state->timespans->push_back (timespan);
                return false;
        }
 
@@ -425,6 +433,18 @@ ExportProfileManager::init_channel_configs (XMLNodeList nodes)
        if (nodes.empty()) {
                ChannelConfigStatePtr config (new ChannelConfigState (handler->add_channel_config()));
                channel_configs.push_back (config);
+               
+               // Add master outs as default
+               IO* master_out = session.master_out()->output().get();
+               if (!master_out) { return false; }
+               
+               for (uint32_t n = 0; n < master_out->n_ports().n_audio(); ++n) {
+                       PortExportChannel * channel = new PortExportChannel ();
+                       channel->add_port (master_out->audio (n));
+                       
+                       ExportChannelPtr chan_ptr (channel);
+                       config->config->register_channel (chan_ptr);
+               }
                return false;
        }