Effect::mOutputTracks is managed by smart pointer
This commit is contained in:
parent
dcceaca13c
commit
e599cfa6fa
|
@ -384,7 +384,7 @@ bool EffectAutoDuck::Process()
|
|||
if (!cancel)
|
||||
{
|
||||
CopyInputTracks(); // Set up mOutputTracks.
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
Track *iterTrack = iter.First();
|
||||
|
||||
int trackNumber = 0;
|
||||
|
|
|
@ -218,7 +218,7 @@ bool EffectChangeSpeed::Process()
|
|||
CopyInputTracks(Track::All); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
Track* t;
|
||||
mCurTrackNum = 0;
|
||||
mMaxNewLength = 0.0;
|
||||
|
|
|
@ -162,7 +162,7 @@ bool EffectClickRemoval::Process()
|
|||
bool bGoodResult = true;
|
||||
mbDidSomething = false;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
int count = 0;
|
||||
while (track) {
|
||||
|
|
|
@ -94,7 +94,6 @@ Effect::Effect()
|
|||
mWarper = NULL;
|
||||
|
||||
mTracks = NULL;
|
||||
mOutputTracks = NULL;
|
||||
mOutputTracksType = Track::None;
|
||||
mT0 = 0.0;
|
||||
mT1 = 0.0;
|
||||
|
@ -136,11 +135,6 @@ Effect::Effect()
|
|||
|
||||
Effect::~Effect()
|
||||
{
|
||||
if (mOutputTracks)
|
||||
{
|
||||
delete mOutputTracks;
|
||||
}
|
||||
|
||||
if (mUIDialog)
|
||||
{
|
||||
mUIDialog->Close();
|
||||
|
@ -1168,11 +1162,7 @@ bool Effect::DoEffect(wxWindow *parent,
|
|||
{
|
||||
wxASSERT(selectedRegion->duration() >= 0.0);
|
||||
|
||||
if (mOutputTracks)
|
||||
{
|
||||
delete mOutputTracks;
|
||||
mOutputTracks = NULL;
|
||||
}
|
||||
mOutputTracks.reset();
|
||||
|
||||
mFactory = factory;
|
||||
mProjectRate = projectRate;
|
||||
|
@ -1244,11 +1234,7 @@ bool Effect::DoEffect(wxWindow *parent,
|
|||
|
||||
End();
|
||||
|
||||
if (mOutputTracks)
|
||||
{
|
||||
delete mOutputTracks;
|
||||
mOutputTracks = NULL;
|
||||
}
|
||||
mOutputTracks.reset();
|
||||
|
||||
if (returnVal)
|
||||
{
|
||||
|
@ -1327,7 +1313,7 @@ bool Effect::ProcessPass()
|
|||
mBufferSize = 0;
|
||||
mBlockSize = 0;
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
int count = 0;
|
||||
bool clear = false;
|
||||
Track* t = iter.First();
|
||||
|
@ -2079,7 +2065,7 @@ void Effect::CopyInputTracks(int trackType)
|
|||
mIMap.Clear();
|
||||
mOMap.Clear();
|
||||
|
||||
mOutputTracks = new TrackList();
|
||||
mOutputTracks = std::make_unique<TrackList>();
|
||||
mOutputTracksType = trackType;
|
||||
|
||||
//iterate over tracks of type trackType (All types if Track::All)
|
||||
|
@ -2201,7 +2187,7 @@ auto Effect::ModifyAnalysisTrack
|
|||
// Else clear and DELETE mOutputTracks copies.
|
||||
void Effect::ReplaceProcessedTracks(const bool bGoodResult)
|
||||
{
|
||||
wxASSERT(mOutputTracks != NULL); // Make sure we at least did the CopyInputTracks().
|
||||
wxASSERT(mOutputTracks); // Make sure we at least did the CopyInputTracks().
|
||||
|
||||
if (!bGoodResult) {
|
||||
// Processing failed or was cancelled so throw away the processed tracks.
|
||||
|
@ -2277,8 +2263,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult)
|
|||
wxASSERT(mOutputTracks->empty());
|
||||
|
||||
// The output list is no longer needed
|
||||
delete mOutputTracks;
|
||||
mOutputTracks = NULL;
|
||||
mOutputTracks.reset();
|
||||
mOutputTracksType = Track::None;
|
||||
}
|
||||
|
||||
|
@ -2665,8 +2650,7 @@ void Effect::Preview(bool dryOnly)
|
|||
FocusDialog->SetFocus();
|
||||
}
|
||||
|
||||
delete mOutputTracks;
|
||||
mOutputTracks = NULL;
|
||||
mOutputTracks.reset();
|
||||
|
||||
mTracks->Clear();
|
||||
delete mTracks;
|
||||
|
|
|
@ -439,7 +439,7 @@ protected:
|
|||
double mSampleRate;
|
||||
TrackFactory *mFactory;
|
||||
TrackList *mTracks; // the complete list of all tracks
|
||||
TrackList *mOutputTracks; // used only if CopyInputTracks() is called.
|
||||
std::unique_ptr<TrackList> mOutputTracks; // used only if CopyInputTracks() is called.
|
||||
double mT0;
|
||||
double mT1;
|
||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||
|
|
|
@ -538,7 +538,7 @@ bool EffectEqualization::Process()
|
|||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
int count = 0;
|
||||
while (track) {
|
||||
|
|
|
@ -353,7 +353,10 @@ bool EffectEqualization48x::TrackCompare()
|
|||
}
|
||||
|
||||
for(int i=0;i<2;i++) {
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, i ? mEffectEqualization->mOutputTracks : &SecondOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter
|
||||
(Track::Wave, i
|
||||
? mEffectEqualization->mOutputTracks.get()
|
||||
: &SecondOutputTracks);
|
||||
i?sMathPath=sMathPath:sMathPath=0;
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
int count = 0;
|
||||
|
@ -375,7 +378,8 @@ bool EffectEqualization48x::TrackCompare()
|
|||
count++;
|
||||
}
|
||||
}
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mEffectEqualization->mOutputTracks);
|
||||
SelectedTrackListOfKindIterator
|
||||
iter(Track::Wave, mEffectEqualization->mOutputTracks.get());
|
||||
SelectedTrackListOfKindIterator iter2(Track::Wave, &SecondOutputTracks);
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
WaveTrack *track2 = (WaveTrack *) iter2.First();
|
||||
|
@ -440,7 +444,8 @@ bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
|
|||
if(sMathPath) // !!! Filter MUST BE QUAD WORD ALIGNED !!!!
|
||||
mEffectEqualization->mM=(mEffectEqualization->mM&(~15))+1;
|
||||
AllocateBuffersWorkers(MATH_FUNCTION_THREADED);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mEffectEqualization->mOutputTracks);
|
||||
SelectedTrackListOfKindIterator
|
||||
iter(Track::Wave, mEffectEqualization->mOutputTracks.get());
|
||||
long times[] = { 0,0,0,0,0 };
|
||||
wxStopWatch timer;
|
||||
mBenching=true;
|
||||
|
|
|
@ -37,7 +37,7 @@ bool Generator::Process()
|
|||
// Iterate over the tracks
|
||||
bool bGoodResult = true;
|
||||
int ntrack = 0;
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
Track* t = iter.First();
|
||||
|
||||
while (t != NULL)
|
||||
|
|
|
@ -600,7 +600,7 @@ bool EffectNoiseReduction::Process()
|
|||
|
||||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
if (!track)
|
||||
return false;
|
||||
|
|
|
@ -212,7 +212,7 @@ bool EffectNoiseRemoval::Process()
|
|||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
int count = 0;
|
||||
while (track) {
|
||||
|
|
|
@ -159,7 +159,7 @@ bool EffectNormalize::Process()
|
|||
//Iterate over each track
|
||||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
WaveTrack *prevTrack;
|
||||
prevTrack = track;
|
||||
|
|
|
@ -150,7 +150,7 @@ double EffectPaulstretch::CalcPreviewInputLength(double previewLength)
|
|||
bool EffectPaulstretch::Process()
|
||||
{
|
||||
CopyInputTracks();
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
m_t1=mT1;
|
||||
int count=0;
|
||||
|
|
|
@ -74,7 +74,7 @@ bool EffectRepair::Process()
|
|||
this->CopyInputTracks(); // Set up mOutputTracks. //v This may be too much copying for EffectRepair.
|
||||
bool bGoodResult = true;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
int count = 0;
|
||||
while (track) {
|
||||
|
|
|
@ -104,7 +104,7 @@ bool EffectRepeat::Process()
|
|||
bool bGoodResult = true;
|
||||
double maxDestLen = 0.0; // used to change selection to generated bit
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
|
||||
for (Track *t = iter.First(); t && bGoodResult; t = iter.Next())
|
||||
{
|
||||
|
|
|
@ -68,7 +68,7 @@ bool EffectReverse::Process()
|
|||
this->CopyInputTracks(Track::All); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
Track *t = iter.First();
|
||||
int count = 0;
|
||||
while (t) {
|
||||
|
|
|
@ -209,7 +209,7 @@ bool EffectSBSMS::Process()
|
|||
//Iterate over each track
|
||||
//Track::All is needed because this effect needs to introduce silence in the group tracks to keep sync
|
||||
this->CopyInputTracks(Track::All); // Set up mOutputTracks.
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
Track* t;
|
||||
mCurTrackNum = 0;
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ bool EffectSimpleMono::Process()
|
|||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack* pOutWaveTrack = (WaveTrack*)(iter.First());
|
||||
mCurTrackNum = 0;
|
||||
while (pOutWaveTrack != NULL)
|
||||
|
|
|
@ -64,7 +64,7 @@ bool EffectSoundTouch::Process()
|
|||
this->CopyInputTracks(Track::All);
|
||||
bool bGoodResult = true;
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
Track* t;
|
||||
mCurTrackNum = 0;
|
||||
m_maxNewLength = 0.0;
|
||||
|
|
|
@ -75,7 +75,7 @@ bool EffectStereoToMono::Process()
|
|||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
mLeftTrack = (WaveTrack *)iter.First();
|
||||
bool refreshIter = false;
|
||||
|
||||
|
|
|
@ -305,7 +305,7 @@ bool EffectTruncSilence::ProcessIndependently()
|
|||
|
||||
{
|
||||
unsigned iGroup = 0;
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
for (Track *track = iter.First(); track;
|
||||
++iGroup, track = iter.Next(true) // skip linked tracks
|
||||
) {
|
||||
|
@ -314,12 +314,12 @@ bool EffectTruncSilence::ProcessIndependently()
|
|||
|
||||
RegionList silences;
|
||||
|
||||
if (!FindSilences(silences, mOutputTracks, track, last))
|
||||
if (!FindSilences(silences, mOutputTracks.get(), track, last))
|
||||
return false;
|
||||
// Treat tracks in the sync lock group only
|
||||
Track *groupFirst, *groupLast;
|
||||
if (syncLock) {
|
||||
SyncLockedTracksIterator syncIter(mOutputTracks);
|
||||
SyncLockedTracksIterator syncIter(mOutputTracks.get());
|
||||
groupFirst = syncIter.StartWith(track);
|
||||
groupLast = syncIter.Last();
|
||||
}
|
||||
|
@ -350,7 +350,7 @@ bool EffectTruncSilence::ProcessAll()
|
|||
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
|
||||
if (FindSilences(silences, mTracks, iter.First(), iter.Last())) {
|
||||
TrackListIterator iterOut(mOutputTracks);
|
||||
TrackListIterator iterOut(mOutputTracks.get());
|
||||
double totalCutLen = 0.0;
|
||||
Track *const first = iterOut.First();
|
||||
if (DoRemoval(silences, 0, 1, first, iterOut.Last(), totalCutLen)) {
|
||||
|
@ -469,7 +469,7 @@ bool EffectTruncSilence::DoRemoval
|
|||
double cutLen = inLength - outLength;
|
||||
totalCutLen += cutLen;
|
||||
|
||||
TrackListIterator iterOut(mOutputTracks);
|
||||
TrackListIterator iterOut(mOutputTracks.get());
|
||||
bool lastSeen = false;
|
||||
for (Track *t = iterOut.StartWith(firstTrack); t && !lastSeen; t = iterOut.Next())
|
||||
{
|
||||
|
|
|
@ -47,7 +47,7 @@ bool EffectTwoPassSimpleMono::Process()
|
|||
bool EffectTwoPassSimpleMono::ProcessPass()
|
||||
{
|
||||
//Iterate over each track
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
WaveTrack *track = (WaveTrack *) iter.First();
|
||||
mCurTrackNum = 0;
|
||||
while (track) {
|
||||
|
|
|
@ -456,7 +456,7 @@ bool NyquistEffect::Process()
|
|||
// correct sync-lock group behavior when the timeline is affected; then we just want
|
||||
// to operate on the selected wave tracks
|
||||
CopyInputTracks(Track::All);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
|
||||
mCurTrack[0] = (WaveTrack *) iter.First();
|
||||
mOutputTime = 0;
|
||||
mCount = 0;
|
||||
|
@ -472,7 +472,7 @@ bool NyquistEffect::Process()
|
|||
mTrackIndex = 0;
|
||||
|
||||
mNumSelectedChannels = 0;
|
||||
SelectedTrackListOfKindIterator sel(Track::Wave, mOutputTracks);
|
||||
SelectedTrackListOfKindIterator sel(Track::Wave, mOutputTracks.get());
|
||||
for (WaveTrack *t = (WaveTrack *) sel.First(); t; t = (WaveTrack *) sel.Next()) {
|
||||
mNumSelectedChannels++;
|
||||
if (mT1 >= mT0) {
|
||||
|
@ -620,7 +620,7 @@ bool NyquistEffect::Process()
|
|||
}
|
||||
|
||||
// Check whether we're in the same group as the last selected track
|
||||
SyncLockedTracksIterator gIter(mOutputTracks);
|
||||
SyncLockedTracksIterator gIter(mOutputTracks.get());
|
||||
Track *gt = gIter.StartWith(mCurTrack[0]);
|
||||
mFirstInGroup = !gtLast || (gtLast != gt);
|
||||
gtLast = gt;
|
||||
|
@ -1110,7 +1110,7 @@ bool NyquistEffect::ProcessOne()
|
|||
unsigned int l;
|
||||
LabelTrack *ltrack = NULL;
|
||||
|
||||
TrackListIterator iter(mOutputTracks);
|
||||
TrackListIterator iter(mOutputTracks.get());
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
if (t->GetKind() == Track::Label) {
|
||||
ltrack = (LabelTrack *)t;
|
||||
|
@ -1225,7 +1225,7 @@ bool NyquistEffect::ProcessOne()
|
|||
|
||||
// If we were first in the group adjust non-selected group tracks
|
||||
if (mFirstInGroup) {
|
||||
SyncLockedTracksIterator git(mOutputTracks);
|
||||
SyncLockedTracksIterator git(mOutputTracks.get());
|
||||
Track *t;
|
||||
for (t = git.StartWith(mCurTrack[i]); t; t = git.Next())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue