summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_audio_import.cc7
-rw-r--r--gtk2_ardour/sfdb_ui.cc11
-rw-r--r--gtk2_ardour/sfdb_ui.h2
3 files changed, 16 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index 18800ea676..1c3875dfe3 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -649,6 +649,13 @@ Editor::embed_sndfiles (vector<string> paths,
return -3;
}
+ if (!finfo.seekable) {
+ MessageDialog msg ( string_compose ( _("%1\nThis audiofile cannot be embedded. It must be imported!"), short_path (path, 40)), false, Gtk::MESSAGE_ERROR);
+ msg.set_position (WIN_POS_MOUSE);
+ msg.run ();
+ return -2;
+ }
+
if (check_sample_rate && (finfo.samplerate != (int) _session->sample_rate())) {
vector<string> choices;
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 4b8906397d..4b35bde51a 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -1434,6 +1434,7 @@ SoundFileOmega::reset_options ()
bool same_size;
bool src_needed;
+ bool must_copy;
bool selection_includes_multichannel;
bool selection_can_be_embedded_with_links = check_link_status (_session, paths);
ImportMode mode;
@@ -1445,7 +1446,7 @@ SoundFileOmega::reset_options ()
}
bool const have_a_midi_file = (i != paths.end ());
- if (check_info (paths, same_size, src_needed, selection_includes_multichannel)) {
+ if (check_info (paths, same_size, src_needed, selection_includes_multichannel, must_copy)) {
Glib::signal_idle().connect (sigc::mem_fun (*this, &SoundFileOmega::bad_file_message));
return false;
}
@@ -1606,7 +1607,7 @@ SoundFileOmega::reset_options ()
/* We must copy MIDI files or those from Freesound
* or any file if we are under nsm control */
- bool const must_copy = _session->get_nsm_state() || have_a_midi_file || notebook.get_current_page() == 2;
+ must_copy |= _session->get_nsm_state() || have_a_midi_file || notebook.get_current_page() == 2;
if (UIConfiguration::instance().get_only_copy_imported_files()) {
@@ -1648,7 +1649,7 @@ SoundFileOmega::bad_file_message()
}
bool
-SoundFileOmega::check_info (const vector<string>& paths, bool& same_size, bool& src_needed, bool& multichannel)
+SoundFileOmega::check_info (const vector<string>& paths, bool& same_size, bool& src_needed, bool& multichannel, bool& must_copy)
{
SoundFileInfo info;
samplepos_t sz = 0;
@@ -1658,6 +1659,7 @@ SoundFileOmega::check_info (const vector<string>& paths, bool& same_size, bool&
same_size = true;
src_needed = false;
multichannel = false;
+ must_copy = false;
for (vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i) {
@@ -1676,6 +1678,9 @@ SoundFileOmega::check_info (const vector<string>& paths, bool& same_size, bool&
if (info.samplerate != _session->sample_rate()) {
src_needed = true;
}
+ if (!info.seekable) {
+ must_copy = true;
+ }
} else if (SMFSource::valid_midi_file (*i)) {
diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h
index 55f3db968b..e7c75f2ce8 100644
--- a/gtk2_ardour/sfdb_ui.h
+++ b/gtk2_ardour/sfdb_ui.h
@@ -325,7 +325,7 @@ private:
Gtk::VBox block_four;
bool check_info (const std::vector<std::string>& paths,
- bool& same_size, bool& src_needed, bool& multichannel);
+ bool& same_size, bool& src_needed, bool& multichannel, bool& must_copy);
static bool check_link_status (const ARDOUR::Session*, const std::vector<std::string>& paths);