Previously creating a new preset first attempted to load
it from disk, before creating it. This resulted in a
`XML error: failed to load external entity`.
When toggling a channel-configs the following happens:
1. TrackExportChannelSelector::update_config
2. ExportProfileManager::clear_channel_configs
3. RouteExportChannel::create_from_route
[...] CriticalSelectionChanged
4. ExportDialog::update_warnings_and_example_filename
5. ARDOUR::ExportProfileManager::get_warnings
6. ARDOUR::ExportProfileManager::build_filenames
7. ARDOUR::ExportFilename::set_channel_config
[...]
Step 3 creates a RouteExportChannel, Step 7 retains a
shared-pointer to it in the config's ExportFilenamePtr.
When toggling another channel: step 2 release the reference
and step 3 creates a new RouteExportChannel.
This new channel reuses the existing Route::_capture_processor (!).
Now Step 7 releases the first RouteExportChannel in order
to get_warnings for the new one. Since ExportFilenamePtr holds the
the last reference, the d'tor of RouteExportChannel runs,
which removes the capture-processor from the route.
The newly created RouteExportChannel now has a reference
to a CaptureProcessor that is not in the signal-flow.
Note: the order of adding/removing RouteExportChannel matters.
With a two track session:
* Disable "with track/bus processing
* Enable Track 1
* Enable Track 2
* Disable Track 1
* Enable Track 1 // << Track 2 becomes silent
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
Before, an export format with an invalid enum value (for example in the
Encoding id) would crash Ardour with:
unhandled exception (type std::exception) in signal handler:
what: unknown enumerator FOO in PBD::EnumWriter
That kind of error can happen if a new type is introduced and users
switch back to versions without it.
Instead, catch such exceptions while loading a format, log an error, and
skip the format - similar to how other format loading errors are
handled.
When exporting multiple formats with identical filename
extension for the same time-span, the format-name needs
to be added.
Previously that was done internally when starting to export.
The Export-Dialog did not show correct filenames nor
warn of existing files that will be overwritten.
This adds an experimental pipe to ffmpeg to encode mp3. Currently
quality is hardcoded and various aspects remain to be implemented.
However, it is sufficient for initial testing.
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
The issue is that when ExportDialog is destroyed
ExportFileNotebook::FilePage::on_hide is called which in turn calls
ExportProfileManager::save_format_to_disk() in order to save changes to the
analysis and soundcloud upload checkboxes. This then causes the
ExportProfileManager::FormatListChanged signal to be emitted, which in all
other cases is emitted when the format list is modified so that the GUI can
rebuild the format selector menu in ExportFormatSelector::update_format_list
when a format is added or removed.
The problem when doing this in the destructor is that some of the widgets have
already been destroyed, specifically the issue was in
ExportFileNotebook::update_soundcloud_upload trying to access the
soundcloud_selector member that had already had its destructor called.
As it is not necessary to call this signal in the first place and it just
causes unnecessary GUI updates remove the signal emission.
Use this to always include the channel configuration name in stem exports.
git-svn-id: svn://localhost/ardour2/branches/3.0@13616 d708f5d6-7413-0410-9779-e7cbd77b26cf