summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r--gtk2_ardour/ardour_ui.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 4bbd7c5429..834c329793 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -729,9 +729,11 @@ ARDOUR_UI::finish()
{
if (session) {
- if (session->transport_rolling()) {
- session->request_stop ();
- usleep (2500000);
+ int tries = 0;
+
+ while (session->transport_rolling() && (++tries < 8)) {
+ session->request_stop (true, false);
+ usleep (10000);
}
if (session->dirty()) {
@@ -1398,14 +1400,14 @@ ARDOUR_UI::transport_stop ()
return;
}
- session->request_stop ();
+ session->request_stop (false, true);
}
void
ARDOUR_UI::transport_stop_and_forget_capture ()
{
if (session) {
- session->request_stop (true);
+ session->request_stop (true, true);
}
}
@@ -1473,9 +1475,10 @@ ARDOUR_UI::transport_roll ()
if (session->get_play_loop()) {
/* XXX it is not possible to just leave seamless loop and keep
- playing at present (nov 4th 2009
+ playing at present (nov 4th 2009)
*/
if (!Config->get_seamless_loop()) {
+ /* off, and stop */
session->request_play_loop (false, true);
} else {
return;
@@ -1534,12 +1537,11 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
affect_transport = false;
session->request_play_range (false, true);
}
- }
+ }
if (affect_transport) {
-
if (rolling) {
- session->request_stop (with_abort);
+ session->request_stop (with_abort, true);
} else {
session->request_transport_speed (1.0f);
}