diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-14 03:43:54 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-03-14 03:43:54 +0000 |
commit | af707897735a34ab1a82c7307dc61b12c14027a9 (patch) | |
tree | b2a9fc621c4a5d7865a46f09eb5cafeee959a9a1 /gtk2_ardour/streamview.cc | |
parent | 1a52aeb370c9fabbd2229da793aee0399f04ca2f (diff) |
improvements (!) to waveform display for destructive tracks, plus a generic fix that avoid waveview attemting to read peaks before they are ready
git-svn-id: svn://localhost/trunk/ardour2@388 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/streamview.cc')
-rw-r--r-- | gtk2_ardour/streamview.cc | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index a4ee1c9c5e..862efdb4c5 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -535,7 +535,7 @@ StreamView::set_selected_regionviews (AudioRegionSelection& regions) { bool selected; - cerr << _trackview.name() << " (selected = " << regions.size() << ")" << endl; + // cerr << _trackview.name() << " (selected = " << regions.size() << ")" << endl; for (list<AudioRegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) { selected = false; @@ -546,7 +546,7 @@ StreamView::set_selected_regionviews (AudioRegionSelection& regions) } } - cerr << "\tregion " << (*i)->region.name() << " selected = " << selected << endl; + // cerr << "\tregion " << (*i)->region.name() << " selected = " << selected << endl; (*i)->set_selected (selected, this); } } @@ -618,11 +618,12 @@ StreamView::setup_rec_box () // cerr << "\trolling\n"; - if (!rec_active - && _trackview.session().record_status() == Session::Recording - && _trackview.get_diskstream()->record_enabled()) { + if (!rec_active && + _trackview.session().record_status() == Session::Recording && + _trackview.get_diskstream()->record_enabled()) { + + if (_trackview.audio_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) { - if (use_rec_regions && rec_regions.size() == rec_rects.size()) { /* add a new region, but don't bother if they set use_rec_regions mid-record */ AudioRegion::SourceList sources; @@ -664,7 +665,17 @@ StreamView::setup_rec_box () DiskStream& ds = at->disk_stream(); jack_nframes_t frame_pos = ds.current_capture_start (); gdouble xstart = _trackview.editor.frame_to_pixel (frame_pos); - gdouble xend = xstart; + gdouble xend; + + switch (_trackview.audio_track()->mode()) { + case Normal: + xend = xstart; + break; + + case Destructive: + xend = xstart + 2; + break; + } ArdourCanvas::SimpleRect * rec_rect = new Gnome::Canvas::SimpleRect (*canvas_group); rec_rect->property_x1() = xstart; @@ -749,21 +760,32 @@ StreamView::setup_rec_box () void StreamView::update_rec_box () { - /* only update the last box */ if (rec_active && rec_rects.size() > 0) { + /* only update the last box */ RecBoxInfo & rect = rec_rects.back(); jack_nframes_t at = _trackview.get_diskstream()->current_capture_end(); + double xstart; + double xend; + + switch (_trackview.audio_track()->mode()) { + case Normal: + rect.length = at - rect.start; + xstart = _trackview.editor.frame_to_pixel (rect.start); + xend = _trackview.editor.frame_to_pixel (at); + break; + + case Destructive: + rect.length = 2; + xstart = _trackview.editor.frame_to_pixel (at); + xend = xstart + 2; + break; + } - rect.length = at - rect.start; - - gdouble xstart = _trackview.editor.frame_to_pixel ( rect.start ); - gdouble xend = _trackview.editor.frame_to_pixel ( at ); - rect.rectangle->property_x1() = xstart; rect.rectangle->property_x2() = xend; } } - + AudioRegionView* StreamView::find_view (const AudioRegion& region) { |