From f65119016207d9c413437227bd5117fef7dc31b1 Mon Sep 17 00:00:00 2001 From: Hans Baier Date: Thu, 8 May 2008 09:53:19 +0000 Subject: * fixed some valgrind issues (uninitialized instance vars) * Added preliminary support for program changes flags from automation lists git-svn-id: svn://localhost/ardour2/branches/3.0@3327 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/audio_clock.cc | 3 ++- gtk2_ardour/midi_region_view.cc | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index 3ca5ca38e4..5ce5159e72 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -74,7 +74,8 @@ AudioClock::AudioClock (std::string clock_name, bool transient, std::string widg colon4 (":"), colon5 (":"), b1 ("|"), - b2 ("|") + b2 ("|"), + last_when(0) { session = 0; last_when = 0; diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index aa245ed0e1..5b0f3070d4 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -460,7 +460,7 @@ MidiRegionView::redisplay_model() _model->read_lock(); - /* + MidiModel::Notes notes = _model->notes(); cerr << endl << "Model contains " << notes.size() << " Notes:" << endl; for(MidiModel::Notes::iterator i = notes.begin(); i != notes.end(); ++i) { @@ -471,13 +471,29 @@ MidiRegionView::redisplay_model() //<< " Note-on: " << note.on_event(). //<< " Note-off: " << note.off_event() << endl; - }*/ + } for (size_t i=0; i < _model->n_notes(); ++i) { add_note(_model->note_at(i)); } - // TODO: Add program changes here + for (Automatable::Controls::iterator + control = _model->controls().begin(); + control != _model->controls().end(); ++control) { + + if( control->first.type() == MidiPgmChangeAutomation ) { + Glib::Mutex::Lock list_lock (control->second->list()->lock()); + + for(AutomationList::const_iterator event = control->second->list()->begin(); + event != control->second->list()->end(); ++event) { + boost::shared_ptr midi_event(new MIDI::Event()); + MidiControlIterator iter(control->second->list(), (*event)->when, (*event)->value); + _model->control_to_midi_event(*midi_event, iter); + add_pgm_change(midi_event); + } + break; + } + } end_write(); -- cgit v1.2.3