summaryrefslogtreecommitdiff
path: root/gtk2_ardour/note_base.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-10-17 03:19:02 +1100
committernick_m <mainsbridge@gmail.com>2016-10-17 03:19:02 +1100
commitbf5933add60846818219402ebef0b0b47c7ce5f5 (patch)
tree9c557fc5e340cab95bf54575cfa9defe73860a5f /gtk2_ardour/note_base.cc
parentbcea5fc9d366f478622a13d8f587ebcf0e8d13e9 (diff)
Performance: store NoteBase UIConfiguration colors between config changes.
Cumulative time in percent while wiggling the tempo lines rapidly. Before: MidiRegionview::update_sustained 12.02 NoteBase::base_color 6.43 MidiGhostRegion::update_note 3.12 Note::set 1.27 TempoMap::frame_at_quarter_note 0.59 _dynamic_cast 0.13 After: MidiRegionview::update_sustained 10.49 MidiGhostRegion::update_note 5.57 Note::set 2.52 TempoMap::frame_at_quarter_note 1.13 NoteBase::base_color 0.17 _dynamic_cast 0.17
Diffstat (limited to 'gtk2_ardour/note_base.cc')
-rw-r--r--gtk2_ardour/note_base.cc28
1 files changed, 25 insertions, 3 deletions
diff --git a/gtk2_ardour/note_base.cc b/gtk2_ardour/note_base.cc
index ff0ec34dfb..3852673e60 100644
--- a/gtk2_ardour/note_base.cc
+++ b/gtk2_ardour/note_base.cc
@@ -44,6 +44,25 @@ const uint32_t NoteBase::midi_channel_colors[16] = {
0x832dd3ff, 0xa92dd3ff, 0xd32dbfff, 0xd32d67ff
};
+bool NoteBase::_color_init = false;
+uint32_t NoteBase::_selected_mod_col = 0;
+uint32_t NoteBase::_selected_outline_col = 0;
+uint32_t NoteBase::_selected_col = 0;
+uint32_t NoteBase::_min_col = 0;
+uint32_t NoteBase::_mid_col = 0;
+uint32_t NoteBase::_max_col = 0;
+
+void
+NoteBase::set_colors ()
+{
+ _selected_mod_col = UIConfiguration::instance().color_mod ("midi note selected", "midi note");
+ _selected_outline_col = UIConfiguration::instance().color ("midi note selected outline");
+ _selected_col = UIConfiguration::instance().color ("midi note selected");
+ _min_col = UIConfiguration::instance().color_mod ("midi note min", "midi note");
+ _mid_col = UIConfiguration::instance().color_mod ("midi note mid", "midi note");
+ _max_col = UIConfiguration::instance().color_mod ("midi note max", "midi note");
+}
+
NoteBase::NoteBase(MidiRegionView& region, bool with_events, const boost::shared_ptr<NoteType> note)
: _region(region)
, _item (0)
@@ -56,6 +75,10 @@ NoteBase::NoteBase(MidiRegionView& region, bool with_events, const boost::shared
, _mouse_x_fraction (-1.0)
, _mouse_y_fraction (-1.0)
{
+ if (!_color_init) {
+ NoteBase::set_colors();
+ _color_init = true;
+ }
}
NoteBase::~NoteBase()
@@ -169,14 +192,13 @@ NoteBase::base_color()
case TrackColor:
{
const uint32_t region_color = _region.midi_stream_view()->get_region_color();
- return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (region_color, opacity),
- UIConfiguration::instance().color ("midi note selected"),
+ return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (region_color, opacity), _selected_col,
0.5);
}
case ChannelColors:
return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (NoteBase::midi_channel_colors[_note->channel()], opacity),
- UIConfiguration::instance().color ("midi note selected"), 0.5);
+ _selected_col, 0.5);
default:
return meter_style_fill_color(_note->velocity(), selected());