summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-04-13 05:38:31 +1000
committernick_m <mainsbridge@gmail.com>2016-05-27 23:38:14 +1000
commit4f7a4cd23331d64acfabc52e978dcb3dde2e82ec (patch)
tree4bad0d36962295a4e69221f5cf9c2d562d306550 /libs
parentc6d9d8193b4258c75c0dee09fb3b067334a88402 (diff)
Crapola - this is an experimental performance hack that must be reverted.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/playlist.cc30
-rw-r--r--libs/canvas/text.cc12
2 files changed, 30 insertions, 12 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index 3301fe9f9e..2e96dee063 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -1822,6 +1822,7 @@ Playlist::regions_at (framepos_t frame)
for (RegionList::iterator i = rlist->begin(); i != rlist->end(); ) {
RegionList::iterator tmp = i;
+
++tmp;
if ((*i)->muted()) {
@@ -2047,23 +2048,25 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir)
boost::shared_ptr<Region> r = (*i);
frameoffset_t distance;
+ const framepos_t first_frame = r->first_frame();
+ const framepos_t last_frame = r->last_frame();
- if (r->first_frame() > frame) {
+ if (first_frame > frame) {
- distance = r->first_frame() - frame;
+ distance = first_frame - frame;
if (distance < closest) {
- ret = r->first_frame();
+ ret = first_frame;
closest = distance;
}
}
- if (r->last_frame () > frame) {
+ if (last_frame > frame) {
- distance = r->last_frame () - frame;
+ distance = last_frame - frame;
if (distance < closest) {
- ret = r->last_frame ();
+ ret = last_frame;
closest = distance;
}
}
@@ -2075,23 +2078,25 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir)
boost::shared_ptr<Region> r = (*i);
frameoffset_t distance;
+ const framepos_t first_frame = r->first_frame();
+ const framepos_t last_frame = r->last_frame();
- if (r->last_frame() < frame) {
+ if (last_frame < frame) {
- distance = frame - r->last_frame();
+ distance = frame - last_frame;
if (distance < closest) {
- ret = r->last_frame();
+ ret = last_frame;
closest = distance;
}
}
- if (r->first_frame() < frame) {
+ if (first_frame < frame) {
- distance = frame - r->first_frame();
+ distance = frame - first_frame;
if (distance < closest) {
- ret = r->first_frame();
+ ret = first_frame;
closest = distance;
}
}
@@ -2899,6 +2904,7 @@ Playlist::update_after_tempo_map_change ()
}
thaw ();
+ notify_contents_changed();
}
void
diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc
index d1f76eb1a3..3b309e51df 100644
--- a/libs/canvas/text.cc
+++ b/libs/canvas/text.cc
@@ -70,6 +70,10 @@ Text::~Text ()
void
Text::set (string const & text)
{
+ if (text == _text) {
+ return;
+ }
+
begin_change ();
_text = text;
@@ -237,6 +241,10 @@ Text::compute_bounding_box () const
void
Text::set_alignment (Pango::Alignment alignment)
{
+ if (alignment == _alignment) {
+ return;
+ }
+
begin_change ();
_alignment = alignment;
@@ -261,6 +269,10 @@ Text::set_font_description (Pango::FontDescription font_description)
void
Text::set_color (Color color)
{
+ if (color == _color) {
+ return;
+ }
+
begin_change ();
_color = color;