summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/session_transport.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 449349996f..be4cc8112c 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -973,6 +973,8 @@ Session::micro_locate (framecnt_t distance)
void
Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool for_seamless_loop, bool force, bool with_mmc)
{
+ bool need_butler = false;
+
/* Locates for seamless looping are fairly different from other
* locates. They assume that the diskstream buffers for each track
* already have the correct data in them, and thus there is no need to
@@ -1048,7 +1050,8 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool
}
add_post_transport_work (todo);
-
+ need_butler = true;
+
} else {
/* this is functionally what clear_clicks() does but with a tentative lock */
@@ -1115,6 +1118,7 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool
* end.
*/
add_post_transport_work (PostTransportLocate);
+ need_butler = true;
}
}
@@ -1139,7 +1143,9 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool
}
}
- _butler->schedule_transport_work ();
+ if (need_butler) {
+ _butler->schedule_transport_work ();
+ }
loop_changing = false;