diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp index 09ffd1732..f82bab18b 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackSliderHandles.cpp @@ -38,18 +38,24 @@ std::shared_ptr VelocitySliderHandle::GetNoteTrack() float VelocitySliderHandle::GetValue() { - return GetNoteTrack()->GetVelocity(); + if (GetNoteTrack()) + return GetNoteTrack()->GetVelocity(); + else + return 0; } UIHandle::Result VelocitySliderHandle::SetValue (AudacityProject *pProject, float newValue) { auto pTrack = GetNoteTrack(); - pTrack->SetVelocity(newValue); - MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); - if (pMixerBoard) - pMixerBoard->UpdateVelocity(pTrack.get()); + if (pTrack) { + pTrack->SetVelocity(newValue); + + MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); + if (pMixerBoard) + pMixerBoard->UpdateVelocity(pTrack.get()); + } return RefreshCode::RefreshCell; } diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp index 206eddf0b..5a5878851 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackSliderHandles.cpp @@ -35,23 +35,29 @@ std::shared_ptr GainSliderHandle::GetWaveTrack() float GainSliderHandle::GetValue() { - return GetWaveTrack()->GetGain(); + if (GetWaveTrack()) + return GetWaveTrack()->GetGain(); + else + return 0; } UIHandle::Result GainSliderHandle::SetValue (AudacityProject *pProject, float newValue) { auto pTrack = GetWaveTrack(); - pTrack->SetGain(newValue); - // Assume linked track is wave or null - const auto link = static_cast(mpTrack.lock()->GetLink()); - if (link) - link->SetGain(newValue); + if (pTrack) { + pTrack->SetGain(newValue); - MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); - if (pMixerBoard) - pMixerBoard->UpdateGain(pTrack.get()); + // Assume linked track is wave or null + const auto link = static_cast(mpTrack.lock()->GetLink()); + if (link) + link->SetGain(newValue); + + MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); + if (pMixerBoard) + pMixerBoard->UpdateGain(pTrack.get()); + } return RefreshCode::RefreshNone; } @@ -112,35 +118,40 @@ std::shared_ptr PanSliderHandle::GetWaveTrack() float PanSliderHandle::GetValue() { - return GetWaveTrack()->GetPan(); + if (GetWaveTrack()) + return GetWaveTrack()->GetPan(); + else + return 0; } UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newValue) { - auto pTrack = GetWaveTrack(); -#ifdef EXPERIMENTAL_OUTPUT_DISPLAY - bool panZero = false; - panZero = static_cast(mpTrack)->SetPan(newValue); -#else - pTrack->SetPan(newValue); -#endif - - // Assume linked track is wave or null - const auto link = static_cast(pTrack->GetLink()); - if (link) - link->SetPan(newValue); - - MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); - if (pMixerBoard) - pMixerBoard->UpdatePan(pTrack.get()); - using namespace RefreshCode; Result result = RefreshNone; + auto pTrack = GetWaveTrack(); + + if (pTrack) { +#ifdef EXPERIMENTAL_OUTPUT_DISPLAY + bool panZero = false; + panZero = static_cast(mpTrack)->SetPan(newValue); +#else + pTrack->SetPan(newValue); +#endif + + // Assume linked track is wave or null + const auto link = static_cast(pTrack->GetLink()); + if (link) + link->SetPan(newValue); + + MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); + if (pMixerBoard) + pMixerBoard->UpdatePan(pTrack.get()); #ifdef EXPERIMENTAL_OUTPUT_DISPLAY - if(panZero) - result |= FixScrollbars; + if(panZero) + result |= FixScrollbars; #endif + } return result; }