mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-03 00:59:43 +02:00
TrackList::Remove and TrackListIterator::RemoveCurrent always delete the track
This commit is contained in:
parent
4edc960acd
commit
bc5519a0e2
@ -3375,7 +3375,6 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags)
|
||||
if (!success) {
|
||||
if (newTrack) {
|
||||
mTracks->Remove(newTrack);
|
||||
delete newTrack;
|
||||
mTrackPanel->Refresh(false);
|
||||
}
|
||||
|
||||
@ -5635,7 +5634,7 @@ void AudacityProject::HandleMixAndRender(bool toNewTrack)
|
||||
selectedCount++;
|
||||
|
||||
if (!toNewTrack) {
|
||||
t = iter.RemoveCurrent(true);
|
||||
t = iter.RemoveCurrent();
|
||||
} else {
|
||||
t = iter.Next();
|
||||
};
|
||||
@ -6485,7 +6484,7 @@ void AudacityProject::OnRemoveTracks()
|
||||
mMixerBoard->RemoveTrackCluster((WaveTrack*)t);
|
||||
if (!f)
|
||||
f = l; // Capture the track preceeding the first removed track
|
||||
t = iter.RemoveCurrent(true);
|
||||
t = iter.RemoveCurrent();
|
||||
}
|
||||
else {
|
||||
l = t;
|
||||
|
@ -5019,9 +5019,9 @@ void AudacityProject::RemoveTrack(Track * toRemove)
|
||||
pMixerBoard->RemoveTrackCluster((WaveTrack*)toRemove); // Will remove partner shown in same cluster.
|
||||
}
|
||||
|
||||
mTracks->Remove(toRemove, true);
|
||||
mTracks->Remove(toRemove);
|
||||
if (partner) {
|
||||
mTracks->Remove(partner, true);
|
||||
mTracks->Remove(partner);
|
||||
}
|
||||
|
||||
if (mTracks->IsEmpty()) {
|
||||
|
@ -465,12 +465,12 @@ Track *TrackListIterator::Prev(bool skiplinked)
|
||||
return *cur;
|
||||
}
|
||||
|
||||
Track *TrackListIterator::RemoveCurrent(bool deletetrack)
|
||||
Track *TrackListIterator::RemoveCurrent()
|
||||
{
|
||||
if (!l || l->isNull(cur))
|
||||
return nullptr;
|
||||
|
||||
cur = l->Remove(*cur, deletetrack);
|
||||
cur = l->Remove(*cur);
|
||||
|
||||
#ifdef DEBUG_TLI // if we are debugging this bit
|
||||
wxASSERT_MSG((!cur || (*l).Contains((*cur).t)), wxT("cur invalid after deletion of track.")); // check that cur is in the list
|
||||
@ -902,16 +902,13 @@ void TrackList::Replace(Track * t, Track * with, bool deletetrack)
|
||||
}
|
||||
}
|
||||
|
||||
TrackNodePointer TrackList::Remove(Track *t, bool deletetrack)
|
||||
TrackNodePointer TrackList::Remove(Track *t)
|
||||
{
|
||||
TrackNodePointer result(end());
|
||||
if (t) {
|
||||
auto node = t->GetNode();
|
||||
|
||||
if (deletetrack)
|
||||
delete t;
|
||||
else
|
||||
t->SetOwner(NULL, TrackNodePointer{});
|
||||
delete t;
|
||||
|
||||
if (!isNull(node)) {
|
||||
result = erase(node);
|
||||
|
@ -257,7 +257,7 @@ class AUDACITY_DLL_API TrackListIterator /* not final */
|
||||
virtual Track *Prev(bool skiplinked = false);
|
||||
virtual Track *Last(bool skiplinked = false);
|
||||
|
||||
Track *RemoveCurrent(bool deletetrack = false); // returns next
|
||||
Track *RemoveCurrent(); // returns next
|
||||
|
||||
protected:
|
||||
friend TrackList;
|
||||
@ -435,7 +435,7 @@ class AUDACITY_DLL_API TrackList final : public wxEvtHandler, public ListOfTrack
|
||||
|
||||
/// Remove this Track or all children of this TrackList.
|
||||
/// Return an iterator to what followed the removed track.
|
||||
TrackNodePointer Remove(Track *t, bool deletetrack = false);
|
||||
TrackNodePointer Remove(Track *t);
|
||||
|
||||
/// Make the list empty
|
||||
void Clear(bool deleteTracks = false);
|
||||
|
@ -2145,7 +2145,7 @@ Effect::AddedAnalysisTrack::~AddedAnalysisTrack()
|
||||
{
|
||||
if (mpEffect) {
|
||||
// not committed -- DELETE the label track
|
||||
mpEffect->mTracks->Remove(mpTrack, true);
|
||||
mpEffect->mTracks->Remove(mpTrack);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2234,7 +2234,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult)
|
||||
while (i < cnt && mOMap[i] != o) {
|
||||
Track *t = (Track *) mIMap[i];
|
||||
if (t) {
|
||||
mTracks->Remove(t, true);
|
||||
mTracks->Remove(t);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
@ -2273,7 +2273,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult)
|
||||
while (i < cnt) {
|
||||
Track *t = (Track *) mIMap[i];
|
||||
if (t) {
|
||||
mTracks->Remove((Track *)mIMap[i], true);
|
||||
mTracks->Remove((Track *)mIMap[i]);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
@ -167,7 +167,6 @@ bool EffectStereoToMono::ProcessOne(int count)
|
||||
mRightTrack->SetLinked(false);
|
||||
mLeftTrack->SetChannel(Track::MonoChannel);
|
||||
mOutputTracks->Remove(mRightTrack);
|
||||
delete mRightTrack;
|
||||
|
||||
delete [] leftBuffer;
|
||||
delete [] rightBuffer;
|
||||
|
@ -1011,7 +1011,6 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt)
|
||||
// msmeyer: Delete recently added tracks if opening stream fails
|
||||
for (unsigned int i = 0; i < newRecordingTracks.size(); i++) {
|
||||
trackList->Remove(newRecordingTracks[i]);
|
||||
delete newRecordingTracks[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user