From b2e3b18dab5759737b620c92fbe9d0ff6dd177cb Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 15 Jan 2008 03:32:51 +0000 Subject: [PATCH] Fix problem with notes occasionally not showing up at all. git-svn-id: svn://localhost/ardour2/trunk@2919 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/midi_region_view.cc | 5 ++++- gtk2_ardour/midi_time_axis.cc | 2 +- libs/ardour/midi_track.cc | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 177adbf38b..a16da1448f 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -603,6 +603,7 @@ MidiRegionView::add_note(const boost::shared_ptr note) { assert(note->time() >= 0); //assert(note->time() < _region->length()); + assert(midi_view()->note_mode() == Sustained || midi_view()->note_mode() == Percussive); ArdourCanvas::Group* const group = (ArdourCanvas::Group*)get_canvas_group(); @@ -639,7 +640,8 @@ MidiRegionView::add_note(const boost::shared_ptr note) } else if (midi_view()->note_mode() == Percussive) { - //cerr << "MRV::add_note percussive " << note->note() << " @ " << note->time() << endl; + //cerr << "MRV::add_note percussive " << note->note() << " @ " << note->time() + // << " .. " << note->end_time() << endl; const double diamond_size = midi_stream_view()->note_height() / 2.0; const double x = trackview.editor.frame_to_pixel((nframes_t)note->time()); @@ -651,6 +653,7 @@ MidiRegionView::add_note(const boost::shared_ptr note) ev_diamond->property_fill_color_rgba() = note_fill_color(note->velocity()); ev_diamond->property_outline_color_rgba() = note_outline_color(note->velocity()); _events.push_back(ev_diamond); + } } diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 343e869292..534305eaa6 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -230,7 +230,7 @@ MidiTimeAxisView::build_mode_menu() void MidiTimeAxisView::set_note_mode(NoteMode mode) { - if (_note_mode != mode) { + if (_note_mode != mode || midi_track()->note_mode() != mode) { _note_mode = mode; midi_track()->set_note_mode(mode); _view->redisplay_diskstream(); diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 7307ff220d..8e41df84ef 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -47,6 +47,7 @@ using namespace PBD; MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mode) : Track (sess, name, flag, mode, DataType::MIDI) , _immediate_events(1024) // FIXME: size? + , _note_mode(Sustained) { MidiDiskstream::Flag dflags = MidiDiskstream::Flag (0);