summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-09-23 02:40:29 +0000
committerDavid Robillard <d@drobilla.net>2008-09-23 02:40:29 +0000
commitffaf827d93e56052049fc00234283842564821d5 (patch)
treeb3994950fe34c53f7c4381c384e4fa0c75370d27 /gtk2_ardour/midi_region_view.h
parent234d56a8c4da8b3bad47f6f75aa53d1067b1aad9 (diff)
Eliminate a ton of unnecessary complete redrawing in MIDI stream views:
Only resize vertically (don't reaload model) on range changes. Keep track of range in model while loading (writing to model), rather than double display MIDI regions to find out. Don't go crazy and chew CPU blinking around and doing nothing on initial show of MIDI track context menu. Change radio 'full range' and 'contents range' menu items to non-radio actions that just set the range appropriately. Fix crashes on some esoteric case of control data I can't figure out, but fixed anyway, so I guess it all worked out well in the end for everybody. git-svn-id: svn://localhost/ardour2/branches/3.0@3794 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_region_view.h')
-rw-r--r--gtk2_ardour/midi_region_view.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h
index cb5789ab41..fe2655333c 100644
--- a/gtk2_ardour/midi_region_view.h
+++ b/gtk2_ardour/midi_region_view.h
@@ -72,6 +72,7 @@ class MidiRegionView : public RegionView
{ return midi_view()->midi_view(); }
void set_height (double);
+ void apply_note_range(uint8_t lowest, uint8_t highest, bool force=false);
void set_frame_color();
@@ -223,13 +224,18 @@ class MidiRegionView : public RegionView
int8_t _force_channel;
uint16_t _last_channel_selection;
double _default_note_length;
+ uint8_t _current_range_min;
+ uint8_t _current_range_max;
- boost::shared_ptr<ARDOUR::MidiModel> _model;
- std::vector<ArdourCanvas::CanvasNoteEvent*> _events;
- std::vector< boost::shared_ptr<ArdourCanvas::CanvasProgramChange> > _pgm_changes;
- ArdourCanvas::CanvasNote** _active_notes;
- ArdourCanvas::Group* _note_group;
- ARDOUR::MidiModel::DeltaCommand* _delta_command;
+ typedef std::vector<ArdourCanvas::CanvasNoteEvent*> Events;
+ typedef std::vector< boost::shared_ptr<ArdourCanvas::CanvasProgramChange> > PgmChanges;
+
+ boost::shared_ptr<ARDOUR::MidiModel> _model;
+ Events _events;
+ PgmChanges _pgm_changes;
+ ArdourCanvas::CanvasNote** _active_notes;
+ ArdourCanvas::Group* _note_group;
+ ARDOUR::MidiModel::DeltaCommand* _delta_command;
MouseState _mouse_state;
int _pressed_button;