diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-26 16:34:45 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-26 16:34:45 +0000 |
commit | 295b2da733f3080c2a96219bb169829ef4a2c0ce (patch) | |
tree | 18de158244b08b78866592bb05af3a45586ed865 /libs/ardour | |
parent | c25149cfe247ebbe552eccd6b9e8d3a92d870671 (diff) |
non-AA canvas support (not used by default); new SAE menus; fix locate-play-locate ; add toggle-punch ; use primary clock for verbose cursor mode at all the right times; minimize clock redrawing part one
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3123 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/session.h | 1 | ||||
-rw-r--r-- | libs/ardour/session_butler.cc | 2 | ||||
-rw-r--r-- | libs/ardour/session_events.cc | 3 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 12 |
4 files changed, 14 insertions, 4 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 9866c1cbe0..76590368f8 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -162,6 +162,7 @@ class Session : public PBD::StatefulDestructible union { void* ptr; bool yes_or_no; + nframes_t target2_frame; SlaveSource slave; }; diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc index 78d2cbdc9b..2ac06e57dd 100644 --- a/libs/ardour/session_butler.cc +++ b/libs/ardour/session_butler.cc @@ -29,6 +29,7 @@ #include <pbd/error.h> #include <pbd/pthread_utils.h> +#include <pbd/stacktrace.h> #include <ardour/configuration.h> #include <ardour/audioengine.h> @@ -130,6 +131,7 @@ Session::summon_butler () { char c = ButlerRequest::Run; ::write (butler_request_pipe[1], &c, 1); + // PBD::stacktrace (cerr); } void diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index f86f3cbb3b..20e7309c02 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -351,7 +351,8 @@ Session::process_event (Event* ev) case Event::LocateRollLocate: // locate is handled by ::request_roll_at_and_return() _requested_return_frame = ev->target_frame; - set_transport_speed (ev->speed, true); + cerr << "Set RRF " << ev->target_frame << endl; + request_locate (ev->target2_frame, true); break; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 1c44830954..d5c9e99b8a 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -394,6 +394,7 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished) do_locate = true; } else { _transport_frame = last_stop_frame; + _requested_return_frame = -1; } if (synced_to_jack() && !play_loop) { @@ -429,9 +430,14 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished) } #endif - last_stop_frame = _transport_frame; + if (_requested_return_frame < 0) { + last_stop_frame = _transport_frame; + } else { + last_stop_frame = _requested_return_frame; + _requested_return_frame = -1; + } - send_full_time_code (); + send_full_time_code (); deliver_mmc (MIDI::MachineControl::cmdStop, 0); deliver_mmc (MIDI::MachineControl::cmdLocate, _transport_frame); @@ -1188,8 +1194,8 @@ Session::setup_auto_play () void Session::request_roll_at_and_return (nframes_t start, nframes_t return_to) { - request_locate (start, false); Event *ev = new Event (Event::LocateRollLocate, Event::Add, Event::Immediate, return_to, 1.0); + ev->target2_frame = start; queue_event (ev); } |