diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-27 13:56:14 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-27 13:56:14 +0000 |
commit | 3188ad3ab03fb15b430cc6dc2341a66c90a9c393 (patch) | |
tree | 1f1d49f73976b4bb39c298d9e585c2b3c8cb2d49 /gtk2_ardour | |
parent | a969d639864f7c8d3f19aa4bd8f498b4391fb1d8 (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.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 13 |
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); + } } } |