diff options
author | Robin Gareus <robin@gareus.org> | 2020-05-12 15:08:39 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-05-12 15:08:39 +0200 |
commit | 7b2b2401a30385ef80ac69d914e8a405804be7ed (patch) | |
tree | 9d9c8bafce034b80fae4a89cc17ebf93ea87f265 /gtk2_ardour | |
parent | fb203f3df8d6b062ac6c8cf71306c4c73f94a360 (diff) |
Optimize AudioClock info-text rendering
Avoid markup, pango markup parsing is expensive, particularly
for info strings which may be updated periodically at
short time intervals.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/audio_clock.cc | 59 |
1 files changed, 27 insertions, 32 deletions
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index 1dd8c7b86e..e40d4e117e 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -130,10 +130,10 @@ AudioClock::AudioClock (const string& clock_name, bool transient, const string& _right_btn.set_name ("transport option button"); _left_btn.set_sizing_text (_("0000000000000")); - // NB right_btn is in a size-group + _right_btn.set_sizing_text (_("0000000000000")); - _left_btn.set_layout_font (UIConfiguration::instance().get_SmallFont()); - _right_btn.set_layout_font (UIConfiguration::instance().get_SmallFont()); + _left_btn.set_layout_font (UIConfiguration::instance().get_SmallMonospaceFont()); + _right_btn.set_layout_font (UIConfiguration::instance().get_SmallMonospaceFont()); UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &AudioClock::set_colors)); UIConfiguration::instance().DPIReset.connect (sigc::mem_fun (*this, &AudioClock::dpi_reset)); @@ -975,26 +975,21 @@ AudioClock::set_slave_info () case LTC: case MTC: if (tm) { - bool matching; boost::shared_ptr<TimecodeTransportMaster> tcmaster; if ((tcmaster = boost::dynamic_pointer_cast<TimecodeTransportMaster>(tm)) != 0) { - matching = (tcmaster->apparent_timecode_format() == _session->config.get_timecode_format()); - _left_btn.set_text (string_compose ("%1<span face=\"monospace\" foreground=\"%3\">%2</span>", - tm->display_name()[0], - tcmaster->position_string (), - matching ? "#66ff66" : "#ff3333" - ), true); - _right_btn.set_text (tm->delta_string (), true); + //TODO: _left_btn.set_name () // tcmaster->apparent_timecode_format() != _session->config.get_timecode_format(); + _left_btn.set_text (string_compose ("%1%2", tm->display_name()[0], tcmaster->position_string ()), false); + _right_btn.set_text (tm->delta_string (), false); } } else { - _left_btn.set_text (_("--pending--"), true); - _right_btn.set_text ("", true); + _left_btn.set_text (_("--pending--"), false); + _right_btn.set_text ("", false); } break; } } else { - _left_btn.set_text (string_compose ("%1/%2", _("INT"), tm->display_name()), true); - _right_btn.set_text ("", true); + _left_btn.set_text (string_compose ("%1/%2", _("INT"), tm->display_name()), false); + _right_btn.set_text ("", false); } } @@ -1024,8 +1019,8 @@ AudioClock::set_samples (samplepos_t when, bool /*force*/) if (_off) { _layout->set_text (" ----------"); - _left_btn.set_text ("", true); - _right_btn.set_text ("", true); + _left_btn.set_text ("", false); + _right_btn.set_text ("", false); return; } @@ -1053,15 +1048,15 @@ AudioClock::set_samples (samplepos_t when, bool /*force*/) sprintf (buf, "%" PRId64 "Hz", rate); } - _left_btn.set_text (string_compose ("%1 %2", _("SR"), buf), true); + _left_btn.set_text (string_compose ("%1 %2", _("SR"), buf), false); float vid_pullup = _session->config.get_video_pullup(); if (vid_pullup == 0.0) { - _right_btn.set_text ("", true); + _right_btn.set_text ("", false); } else { sprintf (buf, _("%+.4f%%"), vid_pullup); - _right_btn.set_text (string_compose ("%1 %2", _("Pull"), buf), true); + _right_btn.set_text (string_compose ("%1 %2", _("Pull"), buf), false); } } } @@ -1073,8 +1068,8 @@ AudioClock::set_seconds (samplepos_t when, bool /*force*/) if (_off) { _layout->set_text (" ----------"); - _left_btn.set_text ("", true); - _right_btn.set_text ("", true); + _left_btn.set_text ("", false); + _right_btn.set_text ("", false); return; } @@ -1133,8 +1128,8 @@ AudioClock::set_minsec (samplepos_t when, bool /*force*/) if (_off) { _layout->set_text (" --:--:--.---"); - _left_btn.set_text ("", true); - _right_btn.set_text ("", true); + _left_btn.set_text ("", false); + _right_btn.set_text ("", false); return; } @@ -1157,8 +1152,8 @@ AudioClock::set_timecode (samplepos_t when, bool /*force*/) if (_off) { _layout->set_text (" --:--:--:--"); - _left_btn.set_text ("", true); - _right_btn.set_text ("", true); + _left_btn.set_text ("", false); + _right_btn.set_text ("", false); return; } @@ -1194,8 +1189,8 @@ AudioClock::set_bbt (samplepos_t when, samplecnt_t offset, bool /*force*/) if (_off || when >= _limit_pos || when < -_limit_pos) { _layout->set_text (" ---|--|----"); - _left_btn.set_text ("", true); - _right_btn.set_text ("", true); + _left_btn.set_text ("", false); + _right_btn.set_text ("", false); return; } @@ -1276,17 +1271,17 @@ AudioClock::set_bbt (samplepos_t when, samplecnt_t offset, bool /*force*/) if (m.tempo().note_type() == 4) { snprintf (buf, sizeof(buf), "\u2669 = %.3f", _session->tempo_map().tempo_at_sample (pos).note_types_per_minute()); - _left_btn.set_text (string_compose ("%1", buf), true); + _left_btn.set_text (string_compose ("%1", buf), false); } else if (m.tempo().note_type() == 8) { snprintf (buf, sizeof(buf), "\u266a = %.3f", _session->tempo_map().tempo_at_sample (pos).note_types_per_minute()); - _left_btn.set_text (string_compose ("%1", buf), true); + _left_btn.set_text (string_compose ("%1", buf), false); } else { snprintf (buf, sizeof(buf), "%.1f = %.3f", m.tempo().note_type(), _session->tempo_map().tempo_at_sample (pos).note_types_per_minute()); - _left_btn.set_text (string_compose ("%1: %2", S_("Tempo|T"), buf), true); + _left_btn.set_text (string_compose ("%1: %2", S_("Tempo|T"), buf), false); } snprintf (buf, sizeof(buf), "%g/%g", m.meter().divisions_per_bar(), m.meter().note_divisor()); - _right_btn.set_text (string_compose ("%1: %2", S_("TimeSignature|TS"), buf), true); + _right_btn.set_text (string_compose ("%1: %2", S_("TimeSignature|TS"), buf), false); } } |