1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-19 17:40:15 +02:00

Remove naked new and delete in effect preview

This commit is contained in:
Paul Licameli 2016-08-16 13:30:26 -04:00
parent 52cb094f0f
commit a0a76e86d1

View File

@ -2533,22 +2533,22 @@ void Effect::Preview(bool dryOnly)
if (!mPreviewFullSelection) if (!mPreviewFullSelection)
mT1 = t1; mT1 = t1;
{
// Save the original track list // Save the original track list
TrackList *saveTracks = mTracks; TrackList *saveTracks = mTracks;
auto cleanup = finally( [&] { mTracks = saveTracks; } );
// Build NEW tracklist from rendering tracks // Build NEW tracklist from rendering tracks
mTracks = new TrackList(); auto uTracks = std::make_unique<TrackList>();
mTracks = uTracks.get();
// Linear Effect preview optimised by pre-mixing to one track. // Linear Effect preview optimised by pre-mixing to one track.
// Generators need to generate per track. // Generators need to generate per track.
if (mIsLinearEffect && !isGenerator) { if (mIsLinearEffect && !isGenerator) {
WaveTrack::Holder mixLeft, mixRight; WaveTrack::Holder mixLeft, mixRight;
MixAndRender(saveTracks, mFactory, rate, floatSample, mT0, t1, mixLeft, mixRight); MixAndRender(saveTracks, mFactory, rate, floatSample, mT0, t1, mixLeft, mixRight);
if (!mixLeft) { if (!mixLeft)
delete mTracks;
mTracks = saveTracks;
return; return;
}
mixLeft->Offset(-mixLeft->GetStartTime()); mixLeft->Offset(-mixLeft->GetStartTime());
mixLeft->InsertSilence(0.0, mT0); mixLeft->InsertSilence(0.0, mT0);
@ -2578,6 +2578,7 @@ void Effect::Preview(bool dryOnly)
} }
} }
// Update track/group counts // Update track/group counts
CountWaveTracks(); CountWaveTracks();
@ -2651,11 +2652,8 @@ void Effect::Preview(bool dryOnly)
} }
mOutputTracks.reset(); mOutputTracks.reset();
}
mTracks->Clear();
delete mTracks;
mTracks = saveTracks;
mT0 = oldT0; mT0 = oldT0;
mT1 = oldT1; mT1 = oldT1;