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 | |
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')
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 4 |
2 files changed, 8 insertions, 7 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 (); } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index d1d9afc985..e73975ba85 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1920,7 +1920,7 @@ Editor::scrub (framepos_t frame, double current_x) scrub_reverse_distance = 0; delta = 0.01 * (last_scrub_x - current_x); - _session->request_transport_speed (_session->transport_speed() - delta); + _session->request_transport_speed_nonzero (_session->transport_speed() - delta); } } else { @@ -1939,7 +1939,7 @@ Editor::scrub (framepos_t frame, double current_x) scrub_reverse_distance = 0; delta = 0.01 * (current_x - last_scrub_x); - _session->request_transport_speed (_session->transport_speed() + delta); + _session->request_transport_speed_nonzero (_session->transport_speed() + delta); } } |