summaryrefslogtreecommitdiff
path: root/gtk2_ardour/shuttle_control.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-12-14 09:58:53 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-12-14 09:58:53 -0700
commitab7b5c6089de7d13a49c92efbf052a4d79c6cc47 (patch)
tree03ffcba5c011f5cc328263d19dec4f7501a1d91c /gtk2_ardour/shuttle_control.cc
parent9743d75fc203a36ca305fb8f2d17904295bbd599 (diff)
add safety tests inside ShuttleControl to deal with _session == 0
Diffstat (limited to 'gtk2_ardour/shuttle_control.cc')
-rw-r--r--gtk2_ardour/shuttle_control.cc23
1 files changed, 18 insertions, 5 deletions
diff --git a/gtk2_ardour/shuttle_control.cc b/gtk2_ardour/shuttle_control.cc
index caf0d8cf73..b3f09ccdbe 100644
--- a/gtk2_ardour/shuttle_control.cc
+++ b/gtk2_ardour/shuttle_control.cc
@@ -157,7 +157,13 @@ ShuttleControl::on_size_allocate (Gtk::Allocation& alloc)
void
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
&& !( speed == 1.f && last_speed_displayed != 1.f)
@@ -261,6 +267,10 @@ ShuttleControl::build_shuttle_context_menu ()
void
ShuttleControl::reset_speed ()
{
+ if (!_session) {
+ return;
+ }
+
if (_session->transport_rolling()) {
_session->request_transport_speed (1.0, true);
} else {
@@ -552,10 +562,13 @@ ShuttleControl::use_shuttle_fract (bool force, bool zero_ok)
}
requested_speed = speed;
- if (zero_ok) {
- _session->request_transport_speed (speed, Config->get_shuttle_behaviour() == Wheel);
- } else {
- _session->request_transport_speed_nonzero (speed, Config->get_shuttle_behaviour() == Wheel);
+
+ if (_session) {
+ if (zero_ok) {
+ _session->request_transport_speed (speed, Config->get_shuttle_behaviour() == Wheel);
+ } else {
+ _session->request_transport_speed_nonzero (speed, Config->get_shuttle_behaviour() == Wheel);
+ }
}
}