new rc config param, try-link-for-embed, controls whether we try hard linking for...
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 30 Nov 2009 13:12:41 +0000 (13:12 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 30 Nov 2009 13:12:41 +0000 (13:12 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@6210 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_audio_import.cc
libs/ardour/ardour/rc_configuration_vars.h

index 35951c1da53d60c0fd17499096978beadcd07dbb..833d26168a30fc257320cb37c40ad010efbe0073 100644 (file)
@@ -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 */
-
-               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 {
-
-                       /* one possible reason is that its already linked */
-
-                       if (errno == EEXIST) {
-                               struct stat sb;
+               if (Config->get_try_link_for_embed()) {
+
+                       /* 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 {
 
-                               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));
index bbf2656ed15fd5f3f42e0c393a5d580240af2389..98f4e2d1b75b6536c37ee96d42c2a71420920acb 100644 (file)
@@ -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 */