1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-26 00:03:52 +02:00

TrackList always deletes tracks on destruction or when cleared

This commit is contained in:
Paul Licameli
2016-03-13 10:34:44 -04:00
parent 824ff647f8
commit c5a70126eb
6 changed files with 22 additions and 29 deletions

View File

@@ -717,9 +717,8 @@ Track *SyncLockedTracksIterator::Last(bool skiplinked)
DEFINE_EVENT_TYPE(EVT_TRACKLIST_RESIZED);
DEFINE_EVENT_TYPE(EVT_TRACKLIST_UPDATED);
TrackList::TrackList(bool destructorDeletesTracks)
TrackList::TrackList()
: wxEvtHandler()
, mDestructorDeletesTracks(destructorDeletesTracks)
{
}
@@ -732,7 +731,7 @@ TrackList::TrackList(const TrackList &that)
TrackList& TrackList::operator= (const TrackList &that)
{
if (this != &that) {
this->Clear(mDestructorDeletesTracks);
this->Clear();
DoAssign(that);
}
return *this;
@@ -746,7 +745,7 @@ TrackList::TrackList(TrackList &&that)
TrackList &TrackList::operator= (TrackList &&that)
{
if (this != &that) {
this->Clear(mDestructorDeletesTracks);
this->Clear();
Swap(that);
}
return *this;
@@ -754,7 +753,6 @@ TrackList &TrackList::operator= (TrackList &&that)
void TrackList::DoAssign(const TrackList &that)
{
mDestructorDeletesTracks = true;
TrackListConstIterator it(&that);
for (const Track *track = it.First(); track; track = it.Next())
Add(track->Duplicate().release());
@@ -767,12 +765,11 @@ void TrackList::Swap(TrackList &that)
(*it)->SetOwner(this, it);
for (auto it = that.begin(), last = that.end(); it != last; ++it)
(*it)->SetOwner(&that, it);
std::swap(mDestructorDeletesTracks, that.mDestructorDeletesTracks);
}
TrackList::~TrackList()
{
Clear(mDestructorDeletesTracks);
Clear();
}
void TrackList::RecalcPositions(TrackNodePointer node)
@@ -923,12 +920,10 @@ TrackNodePointer TrackList::Remove(Track *t)
return result;
}
void TrackList::Clear(bool deleteTracks /* = false */)
void TrackList::Clear()
{
if (deleteTracks)
for (auto track : *this)
delete track;
for (auto track : *this)
delete track;
ListOfTracks::clear();
UpdatedEvent(end());
}