add a method to cancel a pending play_range. this is needed when we are modifying the range with keyboard commands.
This commit is contained in:
parent
0f1c7b1d71
commit
a1c8e67e50
@ -63,8 +63,8 @@ Editor::keyboard_selection_finish (bool add)
|
||||
selection->set (start, end);
|
||||
|
||||
//if session is playing a range, cancel that
|
||||
// if (_session->get_play_range())
|
||||
// _session->request_cancel_play_range();
|
||||
if (_session->get_play_range())
|
||||
_session->request_cancel_play_range();
|
||||
|
||||
}
|
||||
}
|
||||
@ -99,61 +99,10 @@ Editor::keyboard_selection_begin ()
|
||||
|
||||
//if session is playing a range, cancel that
|
||||
if (_session->get_play_range())
|
||||
_session->request_transport_speed ( 1.0 );
|
||||
|
||||
//if join playhead, locate to the newly selected start
|
||||
// if ( !_session->transport_rolling() && Config->get_join_play_range() )
|
||||
// _session->request_cancel_play_range();
|
||||
_session->request_cancel_play_range();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void
|
||||
Editor::keyboard_selection_finish (bool add)
|
||||
{
|
||||
if (_session && have_pending_keyboard_selection) {
|
||||
|
||||
framepos_t end;
|
||||
bool ignored;
|
||||
|
||||
if (_session->transport_rolling()) {
|
||||
end = _session->audible_frame();
|
||||
} else {
|
||||
if (!mouse_frame (end, ignored)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (add) {
|
||||
selection->add (pending_keyboard_selection_start, end);
|
||||
} else {
|
||||
selection->set (pending_keyboard_selection_start, end);
|
||||
}
|
||||
|
||||
have_pending_keyboard_selection = false;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::keyboard_selection_begin ()
|
||||
{
|
||||
if (_session) {
|
||||
if (_session->transport_rolling()) {
|
||||
pending_keyboard_selection_start = _session->audible_frame();
|
||||
have_pending_keyboard_selection = true;
|
||||
} else {
|
||||
bool ignored;
|
||||
framepos_t where; // XXX fix me
|
||||
|
||||
if (mouse_frame (where, ignored)) {
|
||||
pending_keyboard_selection_start = where;
|
||||
have_pending_keyboard_selection = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
void
|
||||
Editor::keyboard_paste ()
|
||||
{
|
||||
|
@ -763,6 +763,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
|
||||
/* ranges */
|
||||
|
||||
void request_play_range (std::list<AudioRange>*, bool leave_rolling = false);
|
||||
void request_cancel_play_range ();
|
||||
bool get_play_range () const { return _play_range; }
|
||||
|
||||
void maybe_update_session_range (framepos_t, framepos_t);
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
Audition,
|
||||
InputConfigurationChange,
|
||||
SetPlayAudioRange,
|
||||
CancelPlayAudioRange,
|
||||
RealTimeOperation,
|
||||
AdjustPlaybackBuffering,
|
||||
AdjustCaptureBuffering,
|
||||
|
@ -369,6 +369,7 @@ setup_enum_writer ()
|
||||
REGISTER_CLASS_ENUM (SessionEvent, Audition);
|
||||
REGISTER_CLASS_ENUM (SessionEvent, InputConfigurationChange);
|
||||
REGISTER_CLASS_ENUM (SessionEvent, SetPlayAudioRange);
|
||||
REGISTER_CLASS_ENUM (SessionEvent, CancelPlayAudioRange);
|
||||
REGISTER_CLASS_ENUM (SessionEvent, StopOnce);
|
||||
REGISTER_CLASS_ENUM (SessionEvent, AutoLoop);
|
||||
REGISTER (_SessionEvent_Type);
|
||||
|
@ -1142,6 +1142,10 @@ Session::process_event (SessionEvent* ev)
|
||||
set_play_range (ev->audio_range, (ev->speed == 1.0f));
|
||||
break;
|
||||
|
||||
case SessionEvent::CancelPlayAudioRange:
|
||||
unset_play_range();
|
||||
break;
|
||||
|
||||
case SessionEvent::RealTimeOperation:
|
||||
process_rtop (ev);
|
||||
del = false; // other side of RT request needs to clean up
|
||||
|
@ -227,6 +227,14 @@ Session::request_play_range (list<AudioRange>* range, bool leave_rolling)
|
||||
queue_event (ev);
|
||||
}
|
||||
|
||||
void
|
||||
Session::request_cancel_play_range ()
|
||||
{
|
||||
SessionEvent* ev = new SessionEvent (SessionEvent::CancelPlayAudioRange, SessionEvent::Add, SessionEvent::Immediate, 0, 0);
|
||||
queue_event (ev);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Session::realtime_stop (bool abort, bool clear_state)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user