1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-04 15:50:10 +01:00

Fixed various casting to (WaveTrack*) without a test for GetKind()==Track::Wave. Was causing crash in (at least) the Contrast.cpp analyze function, when a label was selected but not audio. Also fixed log-of-zero problem in Contrast.cpp when sampling silence.

This commit is contained in:
james.k.crook@gmail.com
2011-04-23 18:53:48 +00:00
parent 14bc36ee39
commit f2bf104922
4 changed files with 94 additions and 90 deletions

View File

@@ -449,28 +449,26 @@ void TranscriptionToolBar::OnStartOn(wxCommandEvent &event)
mVk->AdjustThreshold(GetSensitivity());
AudacityProject *p = GetActiveProject();
TrackList *tl = p->GetTracks();
TrackListIterator iter(tl);
TrackListOfKindIterator iter(Track::Wave, tl);
Track *t = iter.First(); //Make a track
if(t)
{
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
//if(len == 0)
//len = (WaveTrack*)t->GetSequence()->GetNumSamples()-start;
sampleCount newstart = mVk->OnForward(*(WaveTrack*)t,start,len);
double newpos = newstart / ((WaveTrack*)t)->GetRate();
p->SetSel0(newpos);
p->RedrawProject();
if(t ) {
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
//if(len == 0)
//len = (WaveTrack*)t->GetSequence()->GetNumSamples()-start;
sampleCount newstart = mVk->OnForward(*(WaveTrack*)t,start,len);
double newpos = newstart / ((WaveTrack*)t)->GetRate();
p->SetSel0(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_StartOn]);
}
SetButton(false, mButtons[TTB_StartOn]);
}
}
void TranscriptionToolBar::OnStartOff(wxCommandEvent &event)
@@ -484,29 +482,26 @@ void TranscriptionToolBar::OnStartOff(wxCommandEvent &event)
AudacityProject *p = GetActiveProject();
TrackList *tl = p->GetTracks();
TrackListIterator iter(tl);
TrackListOfKindIterator iter(Track::Wave, tl);
SetButton(false, mButtons[TTB_StartOff]);
Track *t = iter.First(); //Make a track
if(t)
{
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
//if(len == 0)
//len = (WaveTrack*)t->GetSequence()->GetNumSamples()-start;
sampleCount newstart = mVk->OffForward(*(WaveTrack*)t,start,len);
double newpos = newstart / ((WaveTrack*)t)->GetRate();
p->SetSel0(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_StartOn]);
}
if(t) {
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
//if(len == 0)
//len = (WaveTrack*)t->GetSequence()->GetNumSamples()-start;
sampleCount newstart = mVk->OffForward(*(WaveTrack*)t,start,len);
double newpos = newstart / ((WaveTrack*)t)->GetRate();
p->SetSel0(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_StartOn]);
}
}
void TranscriptionToolBar::OnEndOn(wxCommandEvent &event)
@@ -521,31 +516,27 @@ void TranscriptionToolBar::OnEndOn(wxCommandEvent &event)
mVk->AdjustThreshold(GetSensitivity());
AudacityProject *p = GetActiveProject();
TrackList *tl = p->GetTracks();
TrackListIterator iter(tl);
TrackListOfKindIterator iter(Track::Wave, tl);
Track *t = iter.First(); //Make a track
if(t)
{
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
if(len == 0)
{
len = start;
start = 0;
}
sampleCount newEnd = mVk->OnBackward(*(WaveTrack*)t,start+ len,len);
double newpos = newEnd / ((WaveTrack*)t)->GetRate();
p->SetSel1(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_EndOn]);
}
if(t) {
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
if(len == 0)
{
len = start;
start = 0;
}
sampleCount newEnd = mVk->OnBackward(*(WaveTrack*)t,start+ len,len);
double newpos = newEnd / ((WaveTrack*)t)->GetRate();
p->SetSel1(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_EndOn]);
}
}
@@ -561,29 +552,26 @@ void TranscriptionToolBar::OnEndOff(wxCommandEvent &event)
mVk->AdjustThreshold(GetSensitivity());
AudacityProject *p = GetActiveProject();
TrackList *tl = p->GetTracks();
TrackListIterator iter(tl);
TrackListOfKindIterator iter(Track::Wave, tl);
Track *t = iter.First(); //Make a track
if(t)
{
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
if(len == 0)
{
len = start;
start = 0;
}
sampleCount newEnd = mVk->OffBackward(*(WaveTrack*)t,start+ len,len);
double newpos = newEnd / ((WaveTrack*)t)->GetRate();
p->SetSel1(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_EndOff]);
if(t) {
sampleCount start,len;
GetSamples((WaveTrack*)t, &start,&len);
//Adjust length to end if selection is null
if(len == 0) {
len = start;
start = 0;
}
sampleCount newEnd = mVk->OffBackward(*(WaveTrack*)t,start+ len,len);
double newpos = newEnd / ((WaveTrack*)t)->GetRate();
p->SetSel1(newpos);
p->RedrawProject();
SetButton(false, mButtons[TTB_EndOff]);
}
}