summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-09-22 13:24:04 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-09-28 17:42:11 -0400
commit9cf56aab843461721ef0dc611c8dda391b2e7e60 (patch)
tree6465022722ec5f1767507d2b8250d7c779e83126
parentb9611a3168608f968a03e637af2ab2b24ca83e78 (diff)
fix the logic of the GUI "toggle roll" action as it pertains to loop recording
-rw-r--r--gtk2_ardour/ardour_ui.cc27
1 files changed, 18 insertions, 9 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 3424a105ae..18fc273656 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -2080,17 +2080,26 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
if (rolling && roll_out_of_bounded_mode) {
/* drop out of loop/range playback but leave transport rolling */
if (_session->get_play_loop()) {
- if (Config->get_seamless_loop()) {
- /* the disk buffers contain copies of the loop - we can't
- just keep playing, so stop the transport. the user
- can restart as they wish.
- */
- affect_transport = true;
+ if (_session->actively_recording()) {
+
+ /* just stop using the loop, then actually stop
+ * below
+ */
+ _session->request_play_loop (false, affect_transport);
+
} else {
- /* disk buffers are normal, so we can keep playing */
- affect_transport = false;
+ if (Config->get_seamless_loop()) {
+ /* the disk buffers contain copies of the loop - we can't
+ just keep playing, so stop the transport. the user
+ can restart as they wish.
+ */
+ affect_transport = true;
+ } else {
+ /* disk buffers are normal, so we can keep playing */
+ affect_transport = false;
+ }
+ _session->request_play_loop (false, affect_transport);
}
- _session->request_play_loop (false, affect_transport);
} else if (_session->get_play_range ()) {
affect_transport = false;
_session->request_play_range (0, true);