+void
+MidiStreamView::display_region(MidiRegionView* region_view, bool load_model)
+{
+ if ( ! region_view)
+ return;
+
+ region_view->enable_display(true);
+
+ boost::shared_ptr<MidiSource> source(region_view->midi_region()->midi_source(0));
+
+ if (load_model)
+ source->load_model();
+
+ _range_dirty = update_data_note_range(
+ source->model()->lowest_note(),
+ source->model()->highest_note());
+
+ // Display region contents
+ region_view->display_model(source->model());
+}
+
+void
+MidiStreamView::display_diskstream (boost::shared_ptr<Diskstream> ds)
+{
+ StreamView::display_diskstream(ds);
+ draw_note_lines();
+ NoteRangeChanged();
+}
+
+bool
+MidiStreamView::update_data_note_range(uint8_t min, uint8_t max)
+{
+ bool dirty = false;
+ if (min < _data_note_min) {
+ _data_note_min = min;
+ dirty = true;
+ }
+ if (max > _data_note_max) {
+ _data_note_max = max;
+ dirty = true;
+ }
+ return dirty;
+}
+
+// FIXME: code duplication with AudioStreamView