summaryrefslogtreecommitdiff
path: root/libs/ardour/region.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-12-12 23:39:09 +0000
committerCarl Hetherington <carl@carlh.net>2011-12-12 23:39:09 +0000
commit56c33f0202b51bc973b77b396d99d75ac858f716 (patch)
treee4ae97e2404f8077e13c3b0d4ba7de4ef35f3e9e /libs/ardour/region.cc
parentaf768486c9b354a1703b09810e21328e513ce51d (diff)
Always set up _last_position on set_position_internal so that the playlist range movement code doesn't get confused when we have region move notifications where the region doesn't actually move (should fix #4557).
git-svn-id: svn://localhost/ardour2/branches/3.0@10992 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/region.cc')
-rw-r--r--libs/ardour/region.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index d337cf6625..f761602ef6 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -596,8 +596,13 @@ Region::set_position (framepos_t pos)
void
Region::set_position_internal (framepos_t pos, bool allow_bbt_recompute)
{
+ /* We emit a change of Properties::position even if the position hasn't changed
+ (see Region::set_position), so we must always set this up so that
+ e.g. Playlist::notify_region_moved doesn't use an out-of-date last_position.
+ */
+ _last_position = _position;
+
if (_position != pos) {
- _last_position = _position;
_position = pos;
/* check that the new _position wouldn't make the current