new rc config param, try-link-for-embed, controls whether we try hard linking for embedding files into a session
git-svn-id: svn://localhost/ardour2/branches/3.0@6210 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -542,35 +542,38 @@ Editor::embed_sndfiles (vector<Glib::ustring> paths, bool multifile,
|
||||
|
||||
ustring path = *p;
|
||||
|
||||
/* lets see if we can link it into the session */
|
||||
if (Config->get_try_link_for_embed()) {
|
||||
|
||||
sys::path tmp = session->session_directory().sound_path() / Glib::path_get_basename(path);
|
||||
linked_path = tmp.to_string();
|
||||
/* lets see if we can link it into the session */
|
||||
|
||||
sys::path tmp = session->session_directory().sound_path() / Glib::path_get_basename(path);
|
||||
linked_path = tmp.to_string();
|
||||
|
||||
path_to_use = linked_path;
|
||||
|
||||
if (link (path.c_str(), linked_path.c_str()) == 0) {
|
||||
|
||||
/* there are many reasons why link(2) might have failed.
|
||||
but if it succeeds, we now have a link in the
|
||||
session sound dir that will protect against
|
||||
unlinking of the original path. nice.
|
||||
*/
|
||||
|
||||
path = linked_path;
|
||||
path_to_use = Glib::path_get_basename (path);
|
||||
|
||||
} else {
|
||||
|
||||
path_to_use = linked_path;
|
||||
|
||||
if (link (path.c_str(), linked_path.c_str()) == 0) {
|
||||
|
||||
/* there are many reasons why link(2) might have failed.
|
||||
but if it succeeds, we now have a link in the
|
||||
session sound dir that will protect against
|
||||
unlinking of the original path. nice.
|
||||
*/
|
||||
|
||||
path = linked_path;
|
||||
path_to_use = Glib::path_get_basename (path);
|
||||
|
||||
} else {
|
||||
|
||||
/* one possible reason is that its already linked */
|
||||
|
||||
if (errno == EEXIST) {
|
||||
struct stat sb;
|
||||
|
||||
if (stat (linked_path.c_str(), &sb) == 0) {
|
||||
if (sb.st_nlink > 1) { // its a hard link, assume its the one we want
|
||||
path = linked_path;
|
||||
path_to_use = Glib::path_get_basename (path);
|
||||
/* one possible reason is that its already linked */
|
||||
|
||||
if (errno == EEXIST) {
|
||||
struct stat sb;
|
||||
|
||||
if (stat (linked_path.c_str(), &sb) == 0) {
|
||||
if (sb.st_nlink > 1) { // its a hard link, assume its the one we want
|
||||
path = linked_path;
|
||||
path_to_use = Glib::path_get_basename (path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -651,9 +654,9 @@ Editor::embed_sndfiles (vector<Glib::ustring> paths, bool multifile,
|
||||
if ((s = session->source_by_path_and_channel (path, n)) == 0) {
|
||||
|
||||
source = boost::dynamic_pointer_cast<AudioFileSource> (
|
||||
SourceFactory::createReadable (DataType::AUDIO, *session,
|
||||
path_to_use, false, n,
|
||||
(mode == ImportAsTapeTrack
|
||||
SourceFactory::createReadable (DataType::AUDIO, *session,
|
||||
path_to_use, n,
|
||||
(mode == ImportAsTapeTrack
|
||||
? Source::Destructive
|
||||
: Source::Flag (0)),
|
||||
true, true));
|
||||
|
||||
@@ -55,6 +55,7 @@ CONFIG_VARIABLE (float, audio_track_buffer_seconds, "track-buffer-seconds", 5.0)
|
||||
CONFIG_VARIABLE (float, midi_track_buffer_seconds, "midi-track-buffer-seconds", 1.0)
|
||||
CONFIG_VARIABLE (uint32_t, disk_choice_space_threshold, "disk-choice-space-threshold", 57600000)
|
||||
CONFIG_VARIABLE (bool, auto_analyse_audio, "auto-analyse-audio", false)
|
||||
CONFIG_VARIABLE (bool, try_link_for_embed, "try-link-for-embed", true)
|
||||
|
||||
/* OSC */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user