13
0

add safety tests inside ShuttleControl to deal with _session == 0

This commit is contained in:
Paul Davis 2019-12-14 09:58:53 -07:00
parent 9743d75fc2
commit ab7b5c6089

View File

@ -157,7 +157,13 @@ ShuttleControl::on_size_allocate (Gtk::Allocation& alloc)
void void
ShuttleControl::map_transport_state () ShuttleControl::map_transport_state ()
{ {
float speed = _session->actual_speed (); float speed;
if (!_session) {
speed = 0.0;
} else {
speed = _session->actual_speed ();
}
if ( (fabsf( speed - last_speed_displayed) < 0.005f) // dead-zone if ( (fabsf( speed - last_speed_displayed) < 0.005f) // dead-zone
&& !( speed == 1.f && last_speed_displayed != 1.f) && !( speed == 1.f && last_speed_displayed != 1.f)
@ -261,6 +267,10 @@ ShuttleControl::build_shuttle_context_menu ()
void void
ShuttleControl::reset_speed () ShuttleControl::reset_speed ()
{ {
if (!_session) {
return;
}
if (_session->transport_rolling()) { if (_session->transport_rolling()) {
_session->request_transport_speed (1.0, true); _session->request_transport_speed (1.0, true);
} else { } else {
@ -552,10 +562,13 @@ ShuttleControl::use_shuttle_fract (bool force, bool zero_ok)
} }
requested_speed = speed; requested_speed = speed;
if (zero_ok) {
_session->request_transport_speed (speed, Config->get_shuttle_behaviour() == Wheel); if (_session) {
} else { if (zero_ok) {
_session->request_transport_speed_nonzero (speed, Config->get_shuttle_behaviour() == Wheel); _session->request_transport_speed (speed, Config->get_shuttle_behaviour() == Wheel);
} else {
_session->request_transport_speed_nonzero (speed, Config->get_shuttle_behaviour() == Wheel);
}
} }
} }