summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui2.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-02-07 01:12:47 +0000
committerCarl Hetherington <carl@carlh.net>2011-02-07 01:12:47 +0000
commit49869c98f359c68baa4ef6e26f7d5b36c348341c (patch)
treea957b1349c2aa7acb9a4a26e83f4d039b6550449 /gtk2_ardour/ardour_ui2.cc
parent6be56d78b199452e5dba726f2d7aaab2777d2b49 (diff)
Prevent various things from stopping the transport by requesting a transport speed of exactly 0 when they are really just continuously varying it. Fixes strange playhead behaviour during varispeed when the user varispeeds to exactly 0 and auto-return is triggered.
git-svn-id: svn://localhost/ardour2/branches/3.0@8733 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui2.cc')
-rw-r--r--gtk2_ardour/ardour_ui2.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 4cd9b71307..1a9b7e53dd 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -816,17 +816,16 @@ ARDOUR_UI::use_shuttle_fract (bool force)
last_shuttle_request = now;
+ double speed = 0;
+
if (Config->get_shuttle_units() == Semitones) {
const double step = 1.0 / 24.0; // range is 24 semitones up & down
double semitones;
- double speed;
semitones = round (shuttle_fract / step);
speed = pow (2.0, (semitones / 12.0));
- _session->request_transport_speed (speed);
-
} else {
bool neg;
@@ -840,9 +839,11 @@ ARDOUR_UI::use_shuttle_fract (bool force)
fract = -fract;
}
- _session->request_transport_speed (shuttle_max_speed * fract);
+ speed = shuttle_max_speed * fract;
}
-
+
+ _session->request_transport_speed_nonzero (speed);
+
shuttle_box.queue_draw ();
}