diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-01-25 20:34:09 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-01-25 20:34:09 +0000 |
commit | 832aa18a813f5ed4cb8e1228c52d89ee6d8946c7 (patch) | |
tree | 7f6edd7d4cabb58ccddceac9aa18d38cc2987313 /gtk2_ardour/audio_streamview.cc | |
parent | 10395d2feeeac8949e9fd491173e467c9852879e (diff) |
a boatload of minor and middle-sized changes to try to speed up undo. imperfect, unfinished, but probably right to commit now
git-svn-id: svn://localhost/ardour2/branches/3.0@6561 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/audio_streamview.cc')
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 61 |
1 files changed, 24 insertions, 37 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index fe4d601e3f..b6abbb4b22 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -24,6 +24,8 @@ #include <gtkmm2ext/gtk_ui.h> +#include "pbd/stacktrace.h" + #include "ardour/audioplaylist.h" #include "ardour/audioregion.h" #include "ardour/audiofilesource.h" @@ -202,14 +204,14 @@ AudioStreamView::remove_region_view (boost::weak_ptr<Region> weak_r) { ENSURE_GUI_THREAD (*this, &AudioStreamView::remove_region_view, weak_r); - cerr << "a region went way, it appears to be ours (" << this << ")\n"; - boost::shared_ptr<Region> r (weak_r.lock()); if (!r) { return; } + cerr << "a region went way, it appears to be ours (" << this << ")\n"; + if (!_trackview.session()->deletion_in_progress()) { for (CrossfadeViewList::iterator i = crossfade_views.begin(); i != crossfade_views.end();) { @@ -244,46 +246,41 @@ AudioStreamView::undisplay_diskstream () } void -AudioStreamView::playlist_modified_weak (boost::weak_ptr<Diskstream> ds) +AudioStreamView::playlist_layered (boost::weak_ptr<Diskstream> wds) { - boost::shared_ptr<Diskstream> sp (ds.lock()); - if (sp) { - playlist_modified (sp); + boost::shared_ptr<Diskstream> ds (wds.lock()); + + if (!ds) { + return; } -} -void -AudioStreamView::playlist_modified (boost::shared_ptr<Diskstream> ds) -{ - /* we do not allow shared_ptr<T> to be bound to slots */ - ENSURE_GUI_THREAD (*this, &AudioStreamView::playlist_modified_weak, ds) + cerr << "AS, call SV::modified @ " << get_microseconds() << endl; + + StreamView::playlist_layered (wds); - StreamView::playlist_modified (ds); + cerr << "AS, done with SV::modified @ " << get_microseconds() << endl; /* make sure xfades are on top and all the regionviews are stacked correctly. */ + cerr << "AS, raise xfades @ " << get_microseconds() << endl; for (CrossfadeViewList::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { i->second->get_canvas_group()->raise_to_top(); } + cerr << "AS, done with xfades @ " << get_microseconds() << endl; } void -AudioStreamView::playlist_changed_weak (boost::weak_ptr<Diskstream> ds) +AudioStreamView::playlist_switched (boost::weak_ptr<Diskstream> wds) { - boost::shared_ptr<Diskstream> sp (ds.lock()); - if (sp) { - playlist_changed (sp); - } -} + boost::shared_ptr<Diskstream> ds (wds.lock()); -void -AudioStreamView::playlist_changed (boost::shared_ptr<Diskstream> ds) -{ - ENSURE_GUI_THREAD (*this, &AudioStreamView::playlist_changed_weak, boost::weak_ptr<Diskstream> (ds)); + if (!ds) { + return; + } playlist_connections.drop_connections (); - StreamView::playlist_changed(ds); + StreamView::playlist_switched (ds); boost::shared_ptr<AudioPlaylist> apl = boost::dynamic_pointer_cast<AudioPlaylist>(ds->playlist()); @@ -293,27 +290,17 @@ AudioStreamView::playlist_changed (boost::shared_ptr<Diskstream> ds) } void -AudioStreamView::add_crossfade_weak (boost::weak_ptr<Crossfade> crossfade) +AudioStreamView::add_crossfade (boost::weak_ptr<Crossfade> wc) { - boost::shared_ptr<Crossfade> sp (crossfade.lock()); + boost::shared_ptr<Crossfade> crossfade (wc.lock()); - if (!sp) { + if (!crossfade) { return; } - add_crossfade (sp); -} - -void -AudioStreamView::add_crossfade (boost::shared_ptr<Crossfade> crossfade) -{ AudioRegionView* lview = 0; AudioRegionView* rview = 0; - /* we do not allow shared_ptr<T> to be bound to slots */ - - ENSURE_GUI_THREAD (*this, &AudioStreamView::add_crossfade_weak, boost::weak_ptr<Crossfade> (crossfade)); - /* first see if we already have a CrossfadeView for this Crossfade */ CrossfadeViewList::iterator i = crossfade_views.find (crossfade); |