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
This commit is contained in:
Paul Davis 2008-02-26 16:34:45 +00:00
parent c25149cfe2
commit 295b2da733
32 changed files with 606 additions and 176 deletions

View file

@ -162,6 +162,7 @@ class Session : public PBD::StatefulDestructible
union {
void* ptr;
bool yes_or_no;
nframes_t target2_frame;
SlaveSource slave;
};

View file

@ -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

View file

@ -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;

View file

@ -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);
}