summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-02-27 13:56:14 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-02-27 13:56:14 +0000
commit3188ad3ab03fb15b430cc6dc2341a66c90a9c393 (patch)
tree1f1d49f73976b4bb39c298d9e585c2b3c8cb2d49 /gtk2_ardour
parenta969d639864f7c8d3f19aa4bd8f498b4391fb1d8 (diff)
fix up BWF creation; make CoreAudioSource work; add CAImportable; refactor SourceFactory to try sndfile first, CoreAudio second
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3126 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.h3
-rw-r--r--gtk2_ardour/editor_audio_import.cc20
-rw-r--r--gtk2_ardour/editor_canvas.cc13
3 files changed, 34 insertions, 2 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index ed87e470f8..281ccff95b 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1075,7 +1075,10 @@ class Editor : public PublicEditor
SoundFileOmega* sfbrowser;
void bring_in_external_audio (Editing::ImportMode mode, nframes64_t& pos);
+
+ void _do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
void do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
+ bool idle_do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
void _do_embed (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
void do_embed (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index f37659093e..2391eae927 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -280,9 +280,26 @@ Editor::get_nth_selected_audio_track (int nth) const
return atv->audio_track();
}
+bool
+Editor::idle_do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos)
+{
+ _do_import (paths, chns, mode, quality, pos);
+ return false;
+}
+
void
Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos)
{
+#ifdef GTKOSX
+ Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_do_import), paths, chns, mode, quality, pos));
+#else
+ _do_import (paths, chns, mode, quality, pos);
+#endif
+}
+
+void
+Editor::_do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos)
+{
boost::shared_ptr<AudioTrack> track;
vector<ustring> to_import;
bool ok = true;
@@ -653,6 +670,9 @@ Editor::embed_sndfiles (vector<Glib::ustring> paths, bool multifile,
boost::shared_ptr<Source> s;
if ((s = session->source_by_path_and_channel (path, n)) == 0) {
+
+ cerr << "add embed/import source with defer_peaks = true\n";
+
source = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable
(*session, path, n,
(mode == ImportAsTapeTrack ?
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 2d034f5308..1c92f2e00c 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -498,7 +498,11 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context,
frame = 0;
- do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame);
+ if (Profile->get_sae() || Config->get_only_copy_imported_files()) {
+ do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack, SrcBest, frame);
+ } else {
+ do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame);
+ }
} else if ((tv = dynamic_cast<AudioTimeAxisView*>(tvp)) != 0) {
@@ -507,7 +511,12 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context,
if (tv->get_diskstream()) {
/* select the track, then embed */
selection->set (tv);
- do_embed (paths, Editing::ImportDistinctFiles, ImportToTrack, frame);
+
+ if (Profile->get_sae() || Config->get_only_copy_imported_files()) {
+ do_import (paths, Editing::ImportDistinctFiles, Editing::ImportToTrack, SrcBest, frame);
+ } else {
+ do_embed (paths, Editing::ImportDistinctFiles, ImportToTrack, frame);
+ }
}
}