diff options
author | Carl Hetherington <carl@carlh.net> | 2011-02-07 01:12:47 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-02-07 01:12:47 +0000 |
commit | 49869c98f359c68baa4ef6e26f7d5b36c348341c (patch) | |
tree | a957b1349c2aa7acb9a4a26e83f4d039b6550449 /gtk2_ardour/ardour_ui2.cc | |
parent | 6be56d78b199452e5dba726f2d7aaab2777d2b49 (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.cc | 11 |
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 (); } |