diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-30 22:35:56 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-30 22:35:56 +0000 |
commit | 0e1f3ade67c54f957d84aad27044d67aa9c31da1 (patch) | |
tree | ca8854a133af5e07022a9971bce407e0f3fbe574 /gtk2_ardour/ardour_ui.cc | |
parent | fa1c6e429b326c1470bc2454ba6570eda1475e2f (diff) |
make space NOT exit from loop/range play, but actually stop; provide ToggleRollMaybe action (and menu item) to do that; if in seamless mode, do not just exit from loop play, but stop, because it won't work (buffers have wrong data in them)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5992 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3a8d0748ce..e56e4ebd69 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1485,7 +1485,7 @@ ARDOUR_UI::transport_roll () } void -ARDOUR_UI::toggle_roll (bool with_abort) +ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode) { if (!session) { @@ -1509,10 +1509,19 @@ ARDOUR_UI::toggle_roll (bool with_abort) bool rolling = session->transport_rolling(); bool affect_transport = true; - if (rolling) { + if (rolling && roll_out_of_bounded_mode) { /* drop out of loop/range playback but leave transport rolling */ if (session->get_play_loop()) { - 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, true); } else if (session->get_play_range ()) { affect_transport = false; |