From 5cbce5b762263e8bd67d439c2e02d5f407a0e541 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 16 Sep 2006 02:58:22 +0000 Subject: Fix for the persistent rec-region problem. git-svn-id: svn://localhost/ardour2/trunk@916 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/audio_streamview.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'gtk2_ardour/audio_streamview.cc') diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index fcf2289570..9a6f1f25a2 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -217,9 +217,7 @@ AudioStreamView::playlist_modified () StreamView::playlist_modified(); - /* if the playlist is modified, make sure xfades are on top and all the regionviews are stacked - correctly. - */ + /* make sure xfades are on top and all the regionviews are stacked correctly. */ for (list::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { (*i)->get_canvas_group()->raise_to_top(); @@ -423,8 +421,8 @@ AudioStreamView::setup_rec_box () (RegionFactory::create (sources, start, 1 , "", 0, (Region::Flag)(Region::DefaultFlags | Region::DoNotSaveState), false))); region->set_position (_trackview.session().transport_frame(), this); rec_regions.push_back (region); - /* catch it if it goes away */ - region->GoingAway.connect (bind (mem_fun (*this, &AudioStreamView::remove_rec_region), region)); + + // rec regions are destroyed in setup_rec_box /* we add the region later */ } @@ -506,6 +504,9 @@ AudioStreamView::setup_rec_box () /* remove temp regions */ + for (list >::iterator i = rec_regions.begin(); i != rec_regions.end(); ++i) { + (*i)->drop_references(); + } rec_regions.clear(); // cerr << "\tclear " << rec_rects.size() << " rec rects\n"; @@ -569,9 +570,10 @@ AudioStreamView::update_rec_regions () continue; } - // FIXME boost::shared_ptr region = boost::dynamic_pointer_cast(*iter); - assert(region); + if (!region) { + continue; + } jack_nframes_t origlen = region->length(); -- cgit v1.2.3