From 9cf56aab843461721ef0dc611c8dda391b2e7e60 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 22 Sep 2015 13:24:04 -0400 Subject: fix the logic of the GUI "toggle roll" action as it pertains to loop recording --- gtk2_ardour/ardour_ui.cc | 27 ++++++++++++++++++--------- 1 file 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); -- cgit v1.2.3