From f369a441cfb79bd65e17c6905b20b444b16ee87c Mon Sep 17 00:00:00 2001 From: paul Date: Thu, 13 Nov 2008 10:00:09 +0000 Subject: [PATCH] speed up track resizing; fixup file DnD; stop use CAAudioFile for imported files git-svn-id: http://subversion.ardour.org/svn/ardour2/ardour2/branches/2.0-ongoing@4148 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/SConscript | 1 + gtk2_ardour/ardbg | 1 + gtk2_ardour/editor.cc | 11 ++ gtk2_ardour/editor.h | 39 +++---- gtk2_ardour/editor_audio_import.cc | 186 +++++++++++++-------------------- gtk2_ardour/editor_canvas.cc | 107 +++++++++---------- gtk2_ardour/editor_region_list.cc | 8 +- gtk2_ardour/editor_route_list.cc | 10 +- gtk2_ardour/redirect_box.cc | 2 + gtk2_ardour/utils.cc | 3 +- libs/appleutility/CAAudioFile.h | 8 +- libs/appleutility/SConscript | 2 +- libs/ardour/ardour/session.h | 2 +- libs/ardour/import.cc | 26 ++--- libs/ardour/sndfileimportable.cc | 1 - libs/gtkmm2ext/dndtreeview.cc | 1 + libs/gtkmm2ext/gtkmm2ext/dndtreeview.h | 5 +- libs/pbd/undo.cc | 1 - 18 files changed, 182 insertions(+), 232 deletions(-) diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 2f299cc9f..9293bb3c5 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -98,6 +98,7 @@ au_pluginui.mm gtkosx_files=Split(""" cocoacarbon.mm +newoverload.cc """) x11_files=Split(""" diff --git a/gtk2_ardour/ardbg b/gtk2_ardour/ardbg index cdb640d63..847d335c2 100755 --- a/gtk2_ardour/ardbg +++ b/gtk2_ardour/ardbg @@ -3,4 +3,5 @@ dir=`dirname "$0"` . $dir/ardev_common.sh LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export ARDOUR_INSIDE_GDB=1 +export DYLD_PRINT_BINDINGS=1 exec gdb $EXECUTABLE "$@" diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 1af7d86b5..3d6ce6e7c 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -300,6 +300,7 @@ Editor::Editor () show_gain_after_trim = false; route_redisplay_does_not_sync_order_keys = false; route_redisplay_does_not_reset_order_keys = false; + ignore_gui_changes = false; no_route_list_redisplay = false; verbose_cursor_on = true; route_removal = false; @@ -4939,6 +4940,9 @@ Editor::add_to_idle_resize (TimeAxisView* view, uint32_t h) { if (resize_idle_id < 0) { resize_idle_id = g_idle_add (_idle_resizer, this); + cerr << "QUEUE and reset idle resize target to " << h << endl; + } else { + cerr << "JUST reset idle resize target to " << h << endl; } resize_idle_target = h; @@ -4948,15 +4952,22 @@ Editor::add_to_idle_resize (TimeAxisView* view, uint32_t h) if (selection->selected (view) && !selection->tracks.empty()) { pending_resizes.insert (pending_resizes.end(), selection->tracks.begin(), selection->tracks.end()); } + + cerr << "\tpending now " << pending_resizes.size() << endl; } bool Editor::idle_resize () { + cerr << "idle resize to " << resize_idle_target << endl; + ignore_gui_changes = true; for (vector::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) { (*i)->idle_resize (resize_idle_target); } pending_resizes.clear(); + ignore_gui_changes = false; + handle_gui_changes ("track_height", this); + flush_canvas (); resize_idle_id = -1; return false; } diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 05066d5d8..ec11b7cbd 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1162,32 +1162,16 @@ class Editor : public PublicEditor void bring_in_external_audio (Editing::ImportMode mode, nframes64_t& pos); - bool idle_drop_paths (const Glib::RefPtr& context, - gint x, - gint y, - const Gtk::SelectionData& data, - guint info, - guint time); - - void _drop_paths (const Glib::RefPtr& context, - gint x, - gint y, - const Gtk::SelectionData& data, - guint info, - guint time); - - void _do_import (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&); + bool idle_drop_paths (std::vector paths, nframes64_t frame, double ypos); + void drop_paths_part_two (const std::vector& paths, nframes64_t frame, double ypos); + void do_import (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&); - bool idle_do_import (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&); - - void _do_embed (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&); void do_embed (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&); - bool idle_do_embed (vector paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&); int import_sndfiles (vector paths, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t& pos, - int target_regions, int target_tracks, boost::shared_ptr&, bool); + int target_regions, int target_tracks, boost::shared_ptr, bool, uint32_t total); int embed_sndfiles (vector paths, bool multiple_files, bool& check_sample_rate, Editing::ImportMode mode, - nframes64_t& pos, int target_regions, int target_tracks, boost::shared_ptr&); + nframes64_t& pos, int target_regions, int target_tracks, boost::shared_ptr); int add_sources (vector paths, ARDOUR::SourceList& sources, nframes64_t& pos, Editing::ImportMode, int target_regions, int target_tracks, boost::shared_ptr&, bool add_channel_suffix); @@ -1215,10 +1199,20 @@ class Editor : public PublicEditor /* import specific info */ - ARDOUR::Session::import_status import_status; + struct EditorImportStatus : public ARDOUR::Session::import_status { + Editing::ImportMode mode; + nframes64_t pos; + int target_tracks; + int target_regions; + boost::shared_ptr track; + bool replace; + }; + + EditorImportStatus import_status; gint import_progress_timeout (void *); static void *_import_thread (void *); void* import_thread (); + void finish_import (); /* to support this ... */ @@ -1309,6 +1303,7 @@ class Editor : public PublicEditor double snap_threshold; void handle_gui_changes (const string &, void *); + bool ignore_gui_changes; void hide_all_tracks (bool with_select); diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 41f07692c..fa946f90c 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -52,6 +52,7 @@ #include "editing.h" #include "audio_time_axis.h" #include "utils.h" +#include "gui_thread.h" #include "i18n.h" @@ -203,6 +204,7 @@ Editor::check_whether_and_how_to_import(string path, bool all_or_nothing) bool wave_name_exists = false; for (AudioSourceList::iterator i = all_sources.begin(); i != all_sources.end(); ++i) { + boost::shared_ptr afs = boost::dynamic_pointer_cast(i->second); string tmp (Glib::path_get_basename (afs->path())); @@ -215,7 +217,6 @@ Editor::check_whether_and_how_to_import(string path, bool all_or_nothing) int function = 1; - if (wave_name_exists) { string message; if (all_or_nothing) { @@ -238,7 +239,6 @@ Editor::check_whether_and_how_to_import(string path, bool all_or_nothing) dialog.add_button("Cancel", 2); } - //dialog.add_button("Skip all", 4); // All or rest? dialog.show(); @@ -281,39 +281,25 @@ Editor::get_nth_selected_audio_track (int nth) const return atv->audio_track(); } -bool -Editor::idle_do_import (vector paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos) -{ - _do_import (paths, chns, mode, quality, pos); - return false; -} - void Editor::do_import (vector paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos) { - _do_import (paths, chns, mode, quality, pos); -} - -void -Editor::_do_import (vector paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos) -{ boost::shared_ptr track; vector to_import; - bool ok = true; int nth = 0; if (interthread_progress_window == 0) { build_interthread_progress_window (); } - cerr << "Here we go .. disp = " << chns << " mode = " << mode << " @ " << pos << endl; - if (chns == Editing::ImportMergeFiles) { + /* create 1 region from all paths, add to 1 track, ignore "track" */ + bool cancel = false; - for (vector::iterator a = paths.begin(); a != paths.end() && ok; ++a) { + for (vector::iterator a = paths.begin(); a != paths.end(); ++a) { int check = check_whether_and_how_to_import(*a, false); if (check == 2) { cancel = true; @@ -322,14 +308,14 @@ Editor::_do_import (vector paths, ImportDisposition chns, ImportMode mo } if (!cancel) { - cerr << "Here we REALLY go ..\n"; - if (import_sndfiles (paths, mode, quality, pos, 1, 1, track, false)) { - ok = false; - } + import_sndfiles (paths, mode, quality, pos, 1, 1, track, false, paths.size()); } } else { + bool replace = false; + bool ok = true; + vector::size_type total = paths.size(); for (vector::iterator a = paths.begin(); a != paths.end() && ok; ++a) { @@ -337,7 +323,7 @@ Editor::_do_import (vector paths, ImportDisposition chns, ImportMode mo switch (check) { case 2: - // skip + // user said skip continue; case 0: fatal << "Updating existing sources should be disabled!" << endmsg; @@ -351,81 +337,49 @@ Editor::_do_import (vector paths, ImportDisposition chns, ImportMode mo /* NOTREACHED*/ } - switch (chns) { - case Editing::ImportDistinctFiles: - to_import.clear (); - to_import.push_back (*a); - - if (mode == Editing::ImportToTrack) { - track = get_nth_selected_audio_track (nth++); - } - - cerr << "Here we REALLY go 2 ..\n"; - if (import_sndfiles (to_import, mode, quality, pos, 1, -1, track, replace)) { - ok = false; - } - - break; - - case Editing::ImportDistinctChannels: - - to_import.clear (); - to_import.push_back (*a); - - cerr << "Here we REALLY go 3 ..\n"; - if (import_sndfiles (to_import, mode, quality, pos, -1, -1, track, replace)) { - ok = false; - } - - break; - - case Editing::ImportSerializeFiles: - - to_import.clear (); - to_import.push_back (*a); - - /* create 1 region from this path, add to 1 track, - reuse "track" across paths - */ - - cerr << "Here we REALLY go 4 ..\n"; - if (import_sndfiles (to_import, mode, quality, pos, 1, 1, track, replace)) { - ok = false; - } + switch (chns) { + case Editing::ImportDistinctFiles: + + to_import.clear (); + to_import.push_back (*a); + + if (mode == Editing::ImportToTrack) { + track = get_nth_selected_audio_track (nth++); + } + + ok = (import_sndfiles (to_import, mode, quality, pos, 1, -1, track, replace, total) == 0); + break; + + case Editing::ImportDistinctChannels: + + to_import.clear (); + to_import.push_back (*a); + + ok = (import_sndfiles (to_import, mode, quality, pos, -1, -1, track, replace, total) == 0); + break; + + case Editing::ImportSerializeFiles: + + to_import.clear (); + to_import.push_back (*a); - break; + ok = (import_sndfiles (to_import, mode, quality, pos, 1, 1, track, replace, total) == 0); + break; - case Editing::ImportMergeFiles: - // Not entered - break; + case Editing::ImportMergeFiles: + // Not entered, handled in earlier if() branch + break; } } - - if (ok) { - session->save_state (""); - } - - interthread_progress_window->hide_all (); } -} -bool -Editor::idle_do_embed (vector paths, ImportDisposition chns, ImportMode mode, nframes64_t& pos) -{ - _do_embed (paths, chns, mode, pos); - return false; + interthread_progress_window->hide_all (); } void Editor::do_embed (vector paths, ImportDisposition chns, ImportMode mode, nframes64_t& pos) { - _do_embed (paths, chns, mode, pos); -} - -void -Editor::_do_embed (vector paths, ImportDisposition chns, ImportMode mode, nframes64_t& pos) -{ boost::shared_ptr track; bool check_sample_rate = true; bool ok = false; @@ -491,7 +445,8 @@ Editor::_do_embed (vector paths, ImportDisposition chns, ImportMode mod int Editor::import_sndfiles (vector paths, ImportMode mode, SrcQuality quality, nframes64_t& pos, - int target_regions, int target_tracks, boost::shared_ptr& track, bool replace) + int target_regions, int target_tracks, boost::shared_ptr track, bool replace, + uint32_t total) { WindowTitle title = string_compose (_("importing %1"), paths.front()); @@ -508,7 +463,14 @@ Editor::import_sndfiles (vector paths, ImportMode mode, SrcQuality qual import_status.done = 0.0; import_status.quality = quality; import_status.replace_existing_source = replace; - + import_status.total = total; + + import_status.mode = mode; + import_status.pos = pos; + import_status.target_tracks = target_tracks; + import_status.target_regions = target_regions; + import_status.track = track; + import_status.replace = replace; interthread_progress_connection = Glib::signal_timeout().connect (bind (mem_fun(*this, &Editor::import_progress_timeout), (gpointer) 0), 500); @@ -516,42 +478,38 @@ Editor::import_sndfiles (vector paths, ImportMode mode, SrcQuality qual gdk_flush (); /* start import thread for this spec. this will ultimately call Session::import_audiofile() - and if successful will add the file(s) as a region to the session region list. + which, if successful, will add the files as regions to the region list. its up to us + (the GUI) to direct additional steps after that. */ - - cerr << "Creating import thread\n"; pthread_create_and_store ("import", &import_status.thread, 0, _import_thread, this); pthread_detach (import_status.thread); - cerr << "into rec loop while thread runs\n"; - - while (!(import_status.done || import_status.cancel)) { + while (!import_status.done && !import_status.cancel) { gtk_main_iteration (); } - cerr << "back from rec loop while thread run, status.cancel = " << import_status.cancel - << " done = " << import_status.done << " progress = " << import_status.progress << endl; - interthread_progress_window->hide (); - import_status.done = true; interthread_progress_connection.disconnect (); - /* import thread finished - see if we should build a new track */ - - boost::shared_ptr r; - - if (import_status.cancel || import_status.sources.empty()) { - cerr << "Cancelled ? " << import_status.cancel << " or no files\n"; - goto out; + if (!import_status.cancel && !import_status.sources.empty()) { + if (add_sources (import_status.paths, + import_status.sources, + import_status.pos, + import_status.mode, + import_status.target_regions, + import_status.target_tracks, + import_status.track, false) == 0) { + session->save_state (""); + } + + /* update position from results */ + + pos = import_status.pos; } - if (add_sources (paths, import_status.sources, pos, mode, target_regions, target_tracks, track, false) == 0) { - session->save_state (""); - } - out: track_canvas->get_window()->set_cursor (*current_canvas_cursor); return 0; } @@ -559,7 +517,7 @@ Editor::import_sndfiles (vector paths, ImportMode mode, SrcQuality qual int Editor::embed_sndfiles (vector paths, bool multifile, bool& check_sample_rate, ImportMode mode, nframes64_t& pos, int target_regions, int target_tracks, - boost::shared_ptr& track) + boost::shared_ptr track) { boost::shared_ptr source; SourceList sources; @@ -568,7 +526,7 @@ Editor::embed_sndfiles (vector paths, bool multifile, int ret = 0; track_canvas->get_window()->set_cursor (Gdk::Cursor (Gdk::WATCH)); - ARDOUR_UI::instance()->flush_pending (); + gdk_flush (); for (vector::iterator p = paths.begin(); p != paths.end(); ++p) { @@ -679,8 +637,6 @@ Editor::embed_sndfiles (vector paths, bool multifile, 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 (SourceFactory::createReadable (*session, path, n, (mode == ImportAsTapeTrack ? @@ -741,7 +697,7 @@ Editor::add_sources (vector paths, SourceList& sources, nframes64 (RegionFactory::create (sources, 0, sources[0]->length(), region_name, 0, Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External)))); - } else if (target_regions == -1) { + } else if (target_regions == -1 || target_regions > 1) { /* take each source and create a region for each one */ diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index b2334ecdc..c30320122 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -447,8 +447,6 @@ Editor::track_canvas_drag_data_received (const RefPtr& context const SelectionData& data, guint info, guint time) { - cerr << "drop on canvas, target = " << data.get_target() << endl; - if (data.get_target() == "regions") { drop_regions (context, x, y, data, info, time); } else { @@ -457,69 +455,19 @@ Editor::track_canvas_drag_data_received (const RefPtr& context } bool -Editor::idle_drop_paths (const RefPtr& context, - int x, int y, - const SelectionData& data, - guint info, guint time) +Editor::idle_drop_paths (vector paths, nframes64_t frame, double ypos) { - _drop_paths (context, x, y, data, info, time); + drop_paths_part_two (paths, frame, ypos); return false; } void -Editor::drop_paths (const RefPtr& context, - int x, int y, - const SelectionData& data, - guint info, guint time) -{ -#ifdef GTKOSX - Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_drop_paths), context, x, y, data, info, time)); -#else - _drop_paths (context, x, y, data, info, time); -#endif -} - -void -Editor::_drop_paths (const RefPtr& context, - int x, int y, - const SelectionData& data, - guint info, guint time) +Editor::drop_paths_part_two (const vector& paths, nframes64_t frame, double ypos) { TimeAxisView* tvp; AudioTimeAxisView* tv; - double cy; - vector paths; - string spath; - GdkEvent ev; - nframes64_t frame; - - if (convert_drop_to_paths (paths, context, x, y, data, info, time)) { - goto out; - } - - for (vector::iterator xx = paths.begin(); xx != paths.end(); ++xx) { - cerr << "Drop path = " << *xx << endl; - } - - /* D-n-D coordinates are window-relative, so convert to "world" coordinates - */ - - double wx; - double wy; - track_canvas->window_to_world (x, y, wx, wy); - //wx += horizontal_adjustment.get_value(); - //wy += vertical_adjustment.get_value(); - - ev.type = GDK_BUTTON_RELEASE; - ev.button.x = wx; - ev.button.y = wy; - - frame = event_frame (&ev, 0, &cy); - - snap_to (frame); - - if ((tvp = trackview_by_y_position (cy)) == 0) { + if ((tvp = trackview_by_y_position (ypos)) == 0) { /* drop onto canvas background: create new tracks */ @@ -536,18 +484,57 @@ Editor::_drop_paths (const RefPtr& context, /* check that its an audio track, not a bus */ if (tv->get_diskstream()) { - /* select the track, then embed */ + /* select the track, then embed/import */ selection->set (tv); if (Profile->get_sae() || Config->get_only_copy_imported_files()) { - do_import (paths, Editing::ImportDistinctFiles, Editing::ImportToTrack, SrcBest, frame); + do_import (paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, frame); } else { - do_embed (paths, Editing::ImportDistinctFiles, ImportToTrack, frame); + do_embed (paths, Editing::ImportSerializeFiles, ImportToTrack, frame); } } } +} + +void +Editor::drop_paths (const RefPtr& context, + int x, int y, + const SelectionData& data, + guint info, guint time) +{ + vector paths; + GdkEvent ev; + nframes64_t frame; + double wx; + double wy; + double cy; + + if (convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) { + + /* D-n-D coordinates are window-relative, so convert to "world" coordinates + */ + + track_canvas->window_to_world (x, y, wx, wy); + + ev.type = GDK_BUTTON_RELEASE; + ev.button.x = wx; + ev.button.y = wy; + + frame = event_frame (&ev, 0, &cy); + + snap_to (frame); + +#ifdef GTKOSX + /* We are not allowed to call recursive main event loops from within + the main event loop with GTK/Quartz. Since import/embed wants + to push up a progress dialog, defer all this till we go idle. + */ + Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_drop_paths), paths, frame, cy)); +#else + drop_paths_part_two (paths, frame, cy); +#endif + } - out: context->drag_finish (true, false, time); } diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index b3bfbcc95..b83d1316b 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -637,14 +638,17 @@ Editor::region_list_display_drag_data_received (const RefPtr& vector paths; if (data.get_target() == "GTK_TREE_MODEL_ROW") { - cerr << "Delete drag data drop to treeview\n"; region_list_display.on_drag_data_received (context, x, y, data, info, time); return; } if (convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) { nframes64_t pos = 0; - do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos); + if (Profile->get_sae() || Config->get_only_copy_imported_files()) { + do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, SrcBest, pos); + } else { + do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos); + } context->drag_finish (true, false, time); } } diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc index 3a1140b00..36f470ea0 100644 --- a/gtk2_ardour/editor_route_list.cc +++ b/gtk2_ardour/editor_route_list.cc @@ -100,7 +100,11 @@ void Editor::handle_gui_changes (const string & what, void *src) { ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::handle_gui_changes), what, src)); - + + if (ignore_gui_changes) { + return; + } + if (what == "track_height") { /* Optional :make tracks change height while it happens, instead of on first-idle @@ -591,14 +595,10 @@ Editor::route_list_display_drag_data_received (const RefPtr& c const SelectionData& data, guint info, guint time) { - cerr << "RouteLD::dddr target = " << data.get_target() << endl; - if (data.get_target() == "GTK_TREE_MODEL_ROW") { - cerr << "Delete drag data drop to treeview\n"; route_list_display.on_drag_data_received (context, x, y, data, info, time); return; } - cerr << "some other kind of drag\n"; context->drag_finish (true, false, time); } diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index 155fa4e1e..d8e3ffd04 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -171,6 +171,8 @@ RedirectBox::route_going_away () void RedirectBox::object_drop (string type, uint32_t cnt, const boost::shared_ptr* ptr) { + cerr << "Object drop, type = " << type << " cnt = " << cnt << endl; + if (type != "redirects" || cnt == 0 || !ptr) { return; } diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 1f4410e36..2e98fad06 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -412,7 +412,8 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) #undef DEBUG_ACCELERATOR_HANDLING #ifdef DEBUG_ACCELERATOR_HANDLING - bool debug = (getenv ("ARDOUR_DEBUG_ACCELERATOR_HANDLING") != 0); + //bool debug = (getenv ("ARDOUR_DEBUG_ACCELERATOR_HANDLING") != 0); + bool debug=true; #endif if (focus) { if (GTK_IS_ENTRY(focus) || Keyboard::some_magic_widget_has_focus()) { diff --git a/libs/appleutility/CAAudioFile.h b/libs/appleutility/CAAudioFile.h index 2cfb4f303..ce22bfe46 100644 --- a/libs/appleutility/CAAudioFile.h +++ b/libs/appleutility/CAAudioFile.h @@ -43,6 +43,7 @@ #ifndef __CAAudioFile_h__ #define __CAAudioFile_h__ +#include #include #if !defined(__COREAUDIO_USE_FLAT_INCLUDES__) @@ -98,6 +99,7 @@ public: // implementation-independent helpers void Open(const char *filePath) { FSRef fsref; + std::cerr << "Opening " << filePath << std::endl; XThrowIfError(FSPathMakeRef((UInt8 *)filePath, &fsref, NULL), "locate audio file"); Open(fsref); } @@ -112,9 +114,10 @@ public: // or the file's sample rate is 0 (unknown) #if CAAF_USE_EXTAUDIOFILE +#warning HERE WE ARE public: - CAAudioFile() : mExtAF(NULL) { } - virtual ~CAAudioFile() { if (mExtAF) Close(); } + CAAudioFile() : mExtAF(NULL) { std::cerr << "Constructing CAAudioFile\n"; } + virtual ~CAAudioFile() { std::cerr << "Destroying CAAudiofile @ " << this << std::endl; if (mExtAF) Close(); } void Open(const FSRef &fsref) { // open an existing file @@ -131,6 +134,7 @@ public: } void Close() { + std::cerr << "\tdisposeo of ext audio file @ " << mExtAF << std::endl; XThrowIfError(ExtAudioFileDispose(mExtAF), "ExtAudioFileClose failed"); mExtAF = NULL; } diff --git a/libs/appleutility/SConscript b/libs/appleutility/SConscript index 5b6f3b6d8..bfe87af9e 100644 --- a/libs/appleutility/SConscript +++ b/libs/appleutility/SConscript @@ -4,7 +4,7 @@ import os import os.path import glob -appleutility_files = glob.glob('*.cpp') +appleutility_files = [ glob.glob('*.cpp') + glob.glob('*.c') + glob.glob('*.C') ] Import('env install_prefix') appleutility = env.Clone() diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index c967310dc..0b845f6ee 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -585,6 +585,7 @@ class Session : public PBD::StatefulDestructible string doing_what; /* control info */ + uint32_t total; SrcQuality quality; volatile bool freeze; std::vector paths; @@ -592,7 +593,6 @@ class Session : public PBD::StatefulDestructible /* result */ SourceList sources; - }; void import_audiofiles (import_status&); diff --git a/libs/ardour/import.cc b/libs/ardour/import.cc index 9f103346f..b21132102 100644 --- a/libs/ardour/import.cc +++ b/libs/ardour/import.cc @@ -50,8 +50,10 @@ #include #ifdef HAVE_COREAUDIO +#ifdef USE_COREAUDIO_FOR_FILE_IO #include #endif +#endif #include "i18n.h" @@ -63,11 +65,13 @@ static boost::shared_ptr open_importable_source (const string& path, nframes_t samplerate, ARDOUR::SrcQuality quality) { #ifdef HAVE_COREAUDIO +#ifdef USE_COREAUDIO_FOR_FILE_IO /* see if we can use CoreAudio to handle the IO */ try { - boost::shared_ptr source(new CAImportableSource(path)); + CAImportableSource* src = new CAImportableSource(path); + boost::shared_ptr source (src); if (source->samplerate() == samplerate) { return source; @@ -81,14 +85,12 @@ open_importable_source (const string& path, nframes_t samplerate, ARDOUR::SrcQua catch (...) { /* fall back to SndFile */ - #endif +#endif try { boost::shared_ptr source(new SndFileImportableSource(path)); - cerr << "Got a new sndfile source from " << path << " as " << source->length() << endl; - if (source->samplerate() == samplerate) { return source; } @@ -103,8 +105,10 @@ open_importable_source (const string& path, nframes_t samplerate, ARDOUR::SrcQua } #ifdef HAVE_COREAUDIO +#ifdef USE_COREAUDIO_FOR_FILE_IO } #endif +#endif } static std::string @@ -246,8 +250,6 @@ write_audio_data_to_new_files (ImportableSource* source, Session::import_status& boost::scoped_array data(new float[nframes * channels]); vector > channel_data; - cerr << "writing " << channels << " to new file, length = " << source->length() << endl; - for (uint n = 0; n < channels; ++n) { channel_data.push_back(boost::shared_array(new Sample[nframes])); } @@ -284,8 +286,6 @@ write_audio_data_to_new_files (ImportableSource* source, Session::import_status& read_count += nread; status.progress = read_count / (source->ratio () * source->length() * channels); - - cerr << "status.progress = " << status.progress << endl; } } @@ -306,9 +306,6 @@ Session::import_audiofiles (import_status& status) typedef vector > AudioSources; AudioSources all_new_sources; - - cerr << "start import of AF\n"; - status.sources.clear (); for (vector::iterator p = status.paths.begin(); @@ -320,13 +317,11 @@ Session::import_audiofiles (import_status& status) try { source = open_importable_source (*p, frame_rate(), status.quality); - cerr << "New source from " << *p << " length = " << source->length() << endl; } catch (const failed_constructor& err) { error << string_compose(_("Import: cannot open input sound file \"%1\""), (*p)) << endmsg; - cerr << string_compose(_("Import: cannot open input sound file \"%1\""), (*p)) << endl; status.done = status.cancel = true; return; } @@ -355,10 +350,8 @@ Session::import_audiofiles (import_status& status) } status.doing_what = compose_status_message (*p, source->samplerate(), - frame_rate(), cnt, status.paths.size()); + frame_rate(), cnt, status.total); - cerr << "about to write audio data\n"; - write_audio_data_to_new_files (source.get(), status, newfiles); } @@ -393,7 +386,6 @@ Session::import_audiofiles (import_status& status) std::for_each (all_new_sources.begin(), all_new_sources.end(), remove_file_source); } - cerr << "end of import, setting done = true\n"; status.done = true; } diff --git a/libs/ardour/sndfileimportable.cc b/libs/ardour/sndfileimportable.cc index 542999f6f..5cd00a8e9 100644 --- a/libs/ardour/sndfileimportable.cc +++ b/libs/ardour/sndfileimportable.cc @@ -9,7 +9,6 @@ SndFileImportableSource::SndFileImportableSource (const string& path) : in (sf_open (path.c_str(), SFM_READ, &sf_info), sf_close) { if (!in) throw failed_constructor(); - std::cerr << "new SFIS @ " << path << " frames = " << sf_info.frames << std::endl; } SndFileImportableSource::~SndFileImportableSource () diff --git a/libs/gtkmm2ext/dndtreeview.cc b/libs/gtkmm2ext/dndtreeview.cc index 2c2e69f6b..a840114de 100644 --- a/libs/gtkmm2ext/dndtreeview.cc +++ b/libs/gtkmm2ext/dndtreeview.cc @@ -47,6 +47,7 @@ DnDTreeViewBase::add_drop_targets (list& targets) for (list::iterator i = targets.begin(); i != targets.end(); ++i) { draggable.push_back (*i); } + enable_model_drag_source (draggable); enable_model_drag_dest (draggable); } diff --git a/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h b/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h index 92872ee60..412eb6975 100644 --- a/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h +++ b/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h @@ -74,13 +74,11 @@ class DnDTreeView : public DnDTreeViewBase sigc::signal signal_object_drop; void on_drag_data_get(const Glib::RefPtr& context, Gtk::SelectionData& selection_data, guint info, guint time) { - std::cerr << "DRAG DATA Get, context = " << context->gobj() << " src = " << context->gobj()->is_source << std::endl; if (selection_data.get_target() == "GTK_TREE_MODEL_ROW") { - + TreeView::on_drag_data_get (context, selection_data, info, time); } else if (data_column >= 0) { - Gtk::TreeSelection::ListHandle_Path selection = get_selection()->get_selected_rows (); SerializedObjectPointers* sr = serialize_pointers (get_model(), &selection, selection_data.get_target()); selection_data.set (8, (guchar*)sr, sr->size); @@ -88,7 +86,6 @@ class DnDTreeView : public DnDTreeViewBase } void on_drag_data_received(const Glib::RefPtr& context, int x, int y, const Gtk::SelectionData& selection_data, guint info, guint time) { - std::cerr << "DRAG DATA Receive, context = " << context->gobj() << " src = " << context->gobj()->is_source << std::endl; if (suggested_action) { /* this is a drag motion callback. just update the status to say that we are still dragging, and that's it. diff --git a/libs/pbd/undo.cc b/libs/pbd/undo.cc index 4ed1e70eb..8823b2da6 100644 --- a/libs/pbd/undo.cc +++ b/libs/pbd/undo.cc @@ -18,7 +18,6 @@ $Id$ */ -#include #include #include #include -- 2.11.4.GIT