diff options
author | David Robillard <d@drobilla.net> | 2009-10-21 16:26:18 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-10-21 16:26:18 +0000 |
commit | 2c59ddede5a4b6c1b9227e2a0288561b38f0763f (patch) | |
tree | 8d564ce65cdd5a559232637d9ec66649c54de142 /gtk2_ardour/audio_streamview.cc | |
parent | 516048882c17b97d9b10985f56a0990f56ae5404 (diff) |
Fix MIDI rec regions.
git-svn-id: svn://localhost/ardour2/branches/3.0@5842 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/audio_streamview.cc')
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 6fcca999ce..1ffb37bb7f 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -470,22 +470,22 @@ AudioStreamView::setup_rec_box () SourceList sources; - for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); prc != rec_data_ready_connections.end(); ++prc) { + for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); + prc != rec_data_ready_connections.end(); ++prc) { (*prc).disconnect(); } rec_data_ready_connections.clear(); - // FIXME - boost::shared_ptr<AudioDiskstream> ads = boost::dynamic_pointer_cast<AudioDiskstream>(_trackview.get_diskstream()); - assert(ads); + boost::shared_ptr<AudioDiskstream> ads = _trackview.audio_track()->audio_diskstream(); for (uint32_t n=0; n < ads->n_channels().n_audio(); ++n) { - boost::shared_ptr<AudioFileSource> src = boost::static_pointer_cast<AudioFileSource> (ads->write_source (n)); + boost::shared_ptr<AudioFileSource> src = ads->write_source (n); if (src) { sources.push_back (src); rec_data_ready_connections.push_back (src->PeakRangeReady.connect (bind - (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), boost::weak_ptr<Source>(src)))); + (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), + boost::weak_ptr<Source>(src)))); } } @@ -493,11 +493,12 @@ AudioStreamView::setup_rec_box () nframes_t start = 0; if (rec_regions.size() > 0) { - start = rec_regions.back().first->start() + _trackview.get_diskstream()->get_captured_frames(rec_regions.size()-1); + start = rec_regions.back().first->start() + + _trackview.get_diskstream()->get_captured_frames(rec_regions.size()-1); } - boost::shared_ptr<AudioRegion> region (boost::dynamic_pointer_cast<AudioRegion> - (RegionFactory::create (sources, start, 1 , "", 0, (Region::Flag)(Region::DefaultFlags), false))); + boost::shared_ptr<AudioRegion> region (boost::dynamic_pointer_cast<AudioRegion>( + RegionFactory::create (sources, start, 1, "", 0, Region::DefaultFlags, false))); assert(region); region->block_property_changes (); region->set_position (_trackview.session().transport_frame(), this); @@ -550,7 +551,8 @@ AudioStreamView::setup_rec_box () rec_rects.push_back (recbox); screen_update_connection.disconnect(); - screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (mem_fun (*this, &AudioStreamView::update_rec_box)); + screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect ( + mem_fun (*this, &AudioStreamView::update_rec_box)); rec_updating = true; rec_active = true; @@ -571,7 +573,8 @@ AudioStreamView::setup_rec_box () /* disconnect rapid update */ screen_update_connection.disconnect(); - for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); prc != rec_data_ready_connections.end(); ++prc) { + for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); + prc != rec_data_ready_connections.end(); ++prc) { (*prc).disconnect(); } rec_data_ready_connections.clear(); @@ -629,7 +632,7 @@ AudioStreamView::rec_peak_range_ready (nframes_t start, nframes_t cnt, boost::we // this is called from the peak building thread - if (rec_data_ready_map.size() == 0 || start+cnt > last_rec_data_frame) { + if (rec_data_ready_map.size() == 0 || start + cnt > last_rec_data_frame) { last_rec_data_frame = start + cnt; } @@ -647,11 +650,10 @@ AudioStreamView::update_rec_regions () if (use_rec_regions) { uint32_t n = 0; - for (list<pair<boost::shared_ptr<Region>,RegionView*> >::iterator iter = rec_regions.begin(); iter != rec_regions.end(); n++) { + for (list<pair<boost::shared_ptr<Region>,RegionView*> >::iterator iter = rec_regions.begin(); + iter != rec_regions.end(); n++) { - list<pair<boost::shared_ptr<Region>,RegionView*> >::iterator tmp; - - tmp = iter; + list<pair<boost::shared_ptr<Region>,RegionView*> >::iterator tmp = iter; ++tmp; if (!canvas_item_visible (rec_rects[n].rectangle)) { @@ -662,6 +664,7 @@ AudioStreamView::update_rec_regions () boost::shared_ptr<AudioRegion> region = boost::dynamic_pointer_cast<AudioRegion>(iter->first); if (!region) { + iter = tmp; continue; } |