1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-08 17:46:25 +01:00

null checks

This commit is contained in:
Paul Licameli
2017-07-15 14:05:03 -04:00
parent 38fd97b8e2
commit 89c8e8ac39
2 changed files with 51 additions and 34 deletions

View File

@@ -38,18 +38,24 @@ std::shared_ptr<NoteTrack> VelocitySliderHandle::GetNoteTrack()
float VelocitySliderHandle::GetValue() float VelocitySliderHandle::GetValue()
{ {
return GetNoteTrack()->GetVelocity(); if (GetNoteTrack())
return GetNoteTrack()->GetVelocity();
else
return 0;
} }
UIHandle::Result VelocitySliderHandle::SetValue UIHandle::Result VelocitySliderHandle::SetValue
(AudacityProject *pProject, float newValue) (AudacityProject *pProject, float newValue)
{ {
auto pTrack = GetNoteTrack(); auto pTrack = GetNoteTrack();
pTrack->SetVelocity(newValue);
MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); if (pTrack) {
if (pMixerBoard) pTrack->SetVelocity(newValue);
pMixerBoard->UpdateVelocity(pTrack.get());
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->UpdateVelocity(pTrack.get());
}
return RefreshCode::RefreshCell; return RefreshCode::RefreshCell;
} }

View File

@@ -35,23 +35,29 @@ std::shared_ptr<WaveTrack> GainSliderHandle::GetWaveTrack()
float GainSliderHandle::GetValue() float GainSliderHandle::GetValue()
{ {
return GetWaveTrack()->GetGain(); if (GetWaveTrack())
return GetWaveTrack()->GetGain();
else
return 0;
} }
UIHandle::Result GainSliderHandle::SetValue UIHandle::Result GainSliderHandle::SetValue
(AudacityProject *pProject, float newValue) (AudacityProject *pProject, float newValue)
{ {
auto pTrack = GetWaveTrack(); auto pTrack = GetWaveTrack();
pTrack->SetGain(newValue);
// Assume linked track is wave or null if (pTrack) {
const auto link = static_cast<WaveTrack*>(mpTrack.lock()->GetLink()); pTrack->SetGain(newValue);
if (link)
link->SetGain(newValue);
MixerBoard *const pMixerBoard = pProject->GetMixerBoard(); // Assume linked track is wave or null
if (pMixerBoard) const auto link = static_cast<WaveTrack*>(mpTrack.lock()->GetLink());
pMixerBoard->UpdateGain(pTrack.get()); if (link)
link->SetGain(newValue);
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->UpdateGain(pTrack.get());
}
return RefreshCode::RefreshNone; return RefreshCode::RefreshNone;
} }
@@ -112,35 +118,40 @@ std::shared_ptr<WaveTrack> PanSliderHandle::GetWaveTrack()
float PanSliderHandle::GetValue() float PanSliderHandle::GetValue()
{ {
return GetWaveTrack()->GetPan(); if (GetWaveTrack())
return GetWaveTrack()->GetPan();
else
return 0;
} }
UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newValue) UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newValue)
{ {
auto pTrack = GetWaveTrack();
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
bool panZero = false;
panZero = static_cast<WaveTrack*>(mpTrack)->SetPan(newValue);
#else
pTrack->SetPan(newValue);
#endif
// Assume linked track is wave or null
const auto link = static_cast<WaveTrack*>(pTrack->GetLink());
if (link)
link->SetPan(newValue);
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->UpdatePan(pTrack.get());
using namespace RefreshCode; using namespace RefreshCode;
Result result = RefreshNone; Result result = RefreshNone;
auto pTrack = GetWaveTrack();
if (pTrack) {
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
bool panZero = false;
panZero = static_cast<WaveTrack*>(mpTrack)->SetPan(newValue);
#else
pTrack->SetPan(newValue);
#endif
// Assume linked track is wave or null
const auto link = static_cast<WaveTrack*>(pTrack->GetLink());
if (link)
link->SetPan(newValue);
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
if (pMixerBoard)
pMixerBoard->UpdatePan(pTrack.get());
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY #ifdef EXPERIMENTAL_OUTPUT_DISPLAY
if(panZero) if(panZero)
result |= FixScrollbars; result |= FixScrollbars;
#endif #endif
}
return result; return result;
} }