1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-02 17:23:18 +02:00

Remove some naked new amd delete in: Project

This commit is contained in:
Paul Licameli 2016-08-02 22:08:13 -04:00
parent 60260520dc
commit cfd7648fce
3 changed files with 105 additions and 120 deletions

View File

@ -1695,7 +1695,7 @@ CommandFlag AudacityProject::GetUpdateFlags()
if (!mViewInfo.selectedRegion.isPoint())
flags |= TimeSelectedFlag;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
flags |= TracksExistFlag;
@ -3336,7 +3336,7 @@ double AudacityProject::NearestZeroCrossing(double t0)
for(i=0; i<windowSize; i++)
dist[i] = 0.0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *track = iter.First();
while (track) {
if (!track->GetSelected() || track->GetKind() != (Track::Wave)) {
@ -3447,7 +3447,7 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags)
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
WaveTrack *newTrack{};
wxWindow *focus = wxWindow::FindFocus();
@ -3475,7 +3475,7 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags)
EffectManager & em = EffectManager::Get();
bool success = em.DoEffect(ID, this, mRate,
mTracks, mTrackFactory,
GetTracks(), GetTrackFactory(),
&mViewInfo.selectedRegion,
(flags & OnEffectFlags::kConfigured) == 0);
@ -3647,7 +3647,7 @@ void AudacityProject::OnExportLabels()
Track *t;
int numLabelTracks = 0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
wxString fName = _("labels.txt");
t = iter.First();
@ -3715,7 +3715,7 @@ void AudacityProject::OnExportLabels()
#ifdef USE_MIDI
void AudacityProject::OnExportMIDI(){
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
int numNoteTracksSelected = 0;
NoteTrack *nt = NULL;
@ -3860,7 +3860,7 @@ void AudacityProject::OnPageSetup()
void AudacityProject::OnPrint()
{
HandlePrint(this, GetName(), mTracks);
HandlePrint(this, GetName(), GetTracks());
}
//
@ -3928,7 +3928,7 @@ void AudacityProject::OnRedo()
void AudacityProject::OnCut()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
// This doesn't handle cutting labels, it handles
@ -4016,7 +4016,7 @@ void AudacityProject::OnCut()
void AudacityProject::OnSplitCut()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
ClearClipboard();
@ -4059,7 +4059,7 @@ void AudacityProject::OnSplitCut()
void AudacityProject::OnCopy()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
@ -4113,7 +4113,7 @@ void AudacityProject::OnPaste()
double t0 = mViewInfo.selectedRegion.t0();
double t1 = mViewInfo.selectedRegion.t1();
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
TrackListIterator clipIter(msClipboard.get());
Track *n = iter.First();
@ -4308,7 +4308,7 @@ void AudacityProject::OnPaste()
// (This was formerly the first part of overly-long OnPaste.)
bool AudacityProject::HandlePasteText()
{
TrackListOfKindIterator iterLabelTrack(Track::Label, mTracks);
TrackListOfKindIterator iterLabelTrack(Track::Label, GetTracks());
LabelTrack* pLabelTrack = (LabelTrack*)(iterLabelTrack.First());
while (pLabelTrack)
{
@ -4344,7 +4344,7 @@ bool AudacityProject::HandlePasteNothingSelected()
{
// First check whether anything's selected.
bool bAnySelected = false;
TrackListIterator iterTrack(mTracks);
TrackListIterator iterTrack(GetTracks());
Track* pTrack = iterTrack.First();
while (pTrack) {
if (pTrack->GetSelected())
@ -4442,13 +4442,13 @@ void AudacityProject::OnPasteNewLabel()
{
bool bPastedSomething = false;
SelectedTrackListOfKindIterator iter(Track::Label, mTracks);
SelectedTrackListOfKindIterator iter(Track::Label, GetTracks());
Track *t = iter.First();
if (!t)
{
// If there are no selected label tracks, try to choose the first label
// track after some other selected track
TrackListIterator iter1(mTracks);
TrackListIterator iter1(GetTracks());
for (Track *t1 = iter1.First(); t1; t1 = iter1.Next()) {
if (t1->GetSelected()) {
// Look for a label track
@ -4525,7 +4525,7 @@ void AudacityProject::OnTrim()
if (mViewInfo.selectedRegion.isPoint())
return;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
while (n) {
@ -4566,7 +4566,7 @@ void AudacityProject::OnDelete()
void AudacityProject::OnSplitDelete()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
@ -4595,7 +4595,7 @@ void AudacityProject::OnSplitDelete()
void AudacityProject::OnDisjoin()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
@ -4620,7 +4620,7 @@ void AudacityProject::OnDisjoin()
void AudacityProject::OnJoin()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
@ -4645,7 +4645,7 @@ void AudacityProject::OnJoin()
void AudacityProject::OnSilence()
{
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
SelectedTrackListOfKindIterator iter(Track::Wave, GetTracks());
for (Track *n = iter.First(); n; n = iter.Next())
n->Silence(mViewInfo.selectedRegion.t0(), mViewInfo.selectedRegion.t1());
@ -4661,7 +4661,7 @@ void AudacityProject::OnSilence()
void AudacityProject::OnDuplicate()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *l = iter.Last();
Track *n = iter.First();
@ -4849,7 +4849,7 @@ void AudacityProject::OnDisjoinLabels()
void AudacityProject::OnSplit()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
double sel0 = mViewInfo.selectedRegion.t0();
double sel1 = mViewInfo.selectedRegion.t1();
@ -4922,7 +4922,7 @@ void AudacityProject::OnSplit()
void AudacityProject::OnSplitNew()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *l = iter.Last();
for (Track *n = iter.First(); n; n = iter.Next()) {
@ -4967,7 +4967,7 @@ void AudacityProject::OnSplitNew()
void AudacityProject::OnSelectAll()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -5003,7 +5003,7 @@ void AudacityProject::DoNextPeakFrequency(bool up)
{
// Find the first selected wave track that is in a spectrogram view.
WaveTrack *pTrack = 0;
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
SelectedTrackListOfKindIterator iter(Track::Wave, GetTracks());
for (Track *t = iter.First(); t; t = iter.Next()) {
WaveTrack *const wt = static_cast<WaveTrack*>(t);
const int display = wt->GetDisplay();
@ -5036,7 +5036,7 @@ void AudacityProject::OnSelectCursorEnd()
{
double maxEndOffset = -1000000.0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -5059,7 +5059,7 @@ void AudacityProject::OnSelectStartCursor()
{
double minOffset = 1000000.0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -5081,7 +5081,7 @@ void AudacityProject::OnSelectStartCursor()
void AudacityProject::OnSelectSyncLockSel()
{
bool selected = false;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
for (Track *t = iter.First(); t; t = iter.Next())
{
if (t->IsSyncLockSelected()) {
@ -5100,7 +5100,7 @@ void AudacityProject::OnSelectSyncLockSel()
void AudacityProject::OnSelectAllTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
for (Track *t = iter.First(); t; t = iter.Next()) {
t->SetSelected(true);
}
@ -5277,7 +5277,7 @@ void AudacityProject::DoZoomFitV()
height -= 28;
count = 0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
if ((t->GetKind() == Track::Wave) &&
@ -5297,7 +5297,7 @@ void AudacityProject::DoZoomFitV()
if (height < 40)
height = 40;
TrackListIterator iter2(mTracks);
TrackListIterator iter2(GetTracks());
t = iter2.First();
while (t) {
if ((t->GetKind() == Track::Wave) &&
@ -5671,7 +5671,7 @@ void AudacityProject::OnImportRaw()
TrackHolders newTracks;
::ImportRaw(this, fileName, mTrackFactory, newTracks);
::ImportRaw(this, fileName, GetTrackFactory(), newTracks);
if (newTracks.size() <= 0)
return;
@ -5709,12 +5709,12 @@ void AudacityProject::HandleMixAndRender(bool toNewTrack)
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
WaveTrack::Holder uNewLeft, uNewRight;
MixAndRender(mTracks, mTrackFactory, mRate, mDefaultFormat, 0.0, 0.0, uNewLeft, uNewRight);
MixAndRender(GetTracks(), GetTrackFactory(), mRate, mDefaultFormat, 0.0, 0.0, uNewLeft, uNewRight);
if (uNewLeft) {
// Remove originals, get stats on what tracks were mixed
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
int selectedCount = 0;
wxString firstName;
@ -5811,7 +5811,7 @@ void AudacityProject::OnCursorTrackStart()
{
double minOffset = 1000000.0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -5835,7 +5835,7 @@ void AudacityProject::OnCursorTrackEnd()
double maxEndOffset = -1000000.0;
double thisEndOffset = 0.0;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -5872,7 +5872,7 @@ void AudacityProject::OnCursorSelEnd()
void AudacityProject::HandleAlign(int index, bool moveSel)
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
wxString action;
wxString shortAction;
double offset;
@ -5966,7 +5966,7 @@ void AudacityProject::HandleAlign(int index, bool moveSel)
}
if ((unsigned)index >= mAlignLabelsCount) { // This is an alignLabelsNoSync command.
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
double leftChannelStart = 0.0;
double leftChannelEnd = 0.0;
@ -6023,7 +6023,7 @@ void AudacityProject::HandleAlign(int index, bool moveSel)
}
if (delta != 0.0) {
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
@ -6502,7 +6502,7 @@ int AudacityProject::DoAddLabel(const SelectedRegion &region, bool preserveFocus
// Otherwise look for a label track after the focused track
if (!lt) {
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
if (t)
iter.StartWith(t);
else
@ -6589,7 +6589,7 @@ void AudacityProject::DoEditLabels(LabelTrack *lt, int index)
wxString format = GetSelectionFormat(),
freqFormat = GetFrequencySelectionFormatName();
LabelDialog dlg(this, *GetTrackFactory(), mTracks,
LabelDialog dlg(this, *GetTrackFactory(), GetTracks(),
lt, index,
mViewInfo, mRate,
format, freqFormat);
@ -6620,7 +6620,7 @@ void AudacityProject::OnEditChains()
void AudacityProject::OnRemoveTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
Track *f = NULL;
Track *l = NULL;
@ -6781,7 +6781,7 @@ void AudacityProject::OnSeparator()
void AudacityProject::OnCollapseAllTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t)
@ -6796,7 +6796,7 @@ void AudacityProject::OnCollapseAllTracks()
void AudacityProject::OnExpandAllTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t)
@ -6812,7 +6812,7 @@ void AudacityProject::OnExpandAllTracks()
void AudacityProject::OnMuteAllTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t)
@ -6831,7 +6831,7 @@ void AudacityProject::OnMuteAllTracks()
void AudacityProject::OnUnMuteAllTracks()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t)
@ -6868,7 +6868,7 @@ void AudacityProject::OnUnlockPlayRegion()
void AudacityProject::OnResample()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
int newRate;

View File

@ -842,8 +842,6 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
// MM: We don't need to Ref() here because it start with refcount=1
mDirManager = new DirManager();
// Create track list
mTracks = new TrackList();
mLastSavedTracks = NULL;
// Register for tracklist updates
@ -965,7 +963,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
TrackPanelID,
wxDefaultPosition,
wxDefaultSize,
mTracks,
GetTracks(),
&mViewInfo,
this,
mRuler);
@ -1093,7 +1091,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
#endif
mIconized = false;
mTrackFactory = new TrackFactory(mDirManager, &mViewInfo);
mTrackFactory.reset(safenew TrackFactory{ mDirManager, &mViewInfo });
int widths[] = {0, GetControlToolBar()->WidthForStatusBar(mStatusBar), -1, 150};
mStatusBar->SetStatusWidths(4, widths);
@ -1103,7 +1101,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
GetControlToolBar()->UpdateStatusBar(this);
mLastStatusUpdateTime = ::wxGetUTCTime();
mTimer = new wxTimer(this, AudacityProjectTimerID);
mTimer = std::make_unique<wxTimer>(this, AudacityProjectTimerID);
mTimer->Start(200);
#if wxUSE_DRAG_AND_DROP
@ -1217,9 +1215,9 @@ wxDialog *AudacityProject::GetMissingAliasFileDialog()
void AudacityProject::RedrawProject(const bool bForceWaveTracks /*= false*/)
{
FixScrollbars();
if (bForceWaveTracks && mTracks)
if (bForceWaveTracks && GetTracks())
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track* pTrack = iter.First();
while (pTrack)
{
@ -1277,7 +1275,7 @@ DirManager *AudacityProject::GetDirManager()
TrackFactory *AudacityProject::GetTrackFactory()
{
return mTrackFactory;
return mTrackFactory.get();
}
AdornedRulerPanel *AudacityProject::GetRulerPanel()
@ -1420,7 +1418,7 @@ double AudacityProject::SSBL_GetRate() const
// Return maximum of project rate and all track rates.
double rate = mRate;
TrackListOfKindIterator iterWaveTrack(Track::Wave, mTracks);
TrackListOfKindIterator iterWaveTrack(Track::Wave, mTracks.get());
WaveTrack *pWaveTrack = static_cast<WaveTrack*>(iterWaveTrack.First());
while (pWaveTrack)
{
@ -1726,7 +1724,7 @@ bool AudacityProject::TP_ScrollUpDown(int delta)
void AudacityProject::FixScrollbars()
{
if(!mTracks)
if (!GetTracks())
return;
bool refresh = false;
@ -1877,8 +1875,8 @@ void AudacityProject::FixScrollbars()
Track *AudacityProject::GetFirstVisible()
{
if (!mViewInfo.track && mTracks) {
TrackListIterator iter(mTracks);
if (!mViewInfo.track && GetTracks()) {
TrackListIterator iter(GetTracks());
for (Track *t = iter.First(); t; t = iter.Next()) {
int y = t->GetY();
int h = t->GetHeight();
@ -1894,7 +1892,7 @@ Track *AudacityProject::GetFirstVisible()
void AudacityProject::UpdateFirstVisible()
{
if (!mViewInfo.track || !mTracks) {
if (!mViewInfo.track || !GetTracks()) {
return;
}
@ -2349,8 +2347,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
ModuleManager::Get().Dispatch(ProjectClosing);
// Stop the timer since there's no need to update anything anymore
delete mTimer;
mTimer = NULL;
mTimer.reset();
// The project is now either saved or the user doesn't want to save it,
// so there's no need to keep auto save info around anymore
@ -2390,7 +2387,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
// in memory. After it's locked, DELETE the data structure so that
// there's no memory leak.
if (mLastSavedTracks) {
TrackListIterator iter(mLastSavedTracks);
TrackListIterator iter(mLastSavedTracks.get());
Track *t = iter.First();
while (t) {
if (t->GetKind() == Track::Wave)
@ -2398,9 +2395,8 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
t = iter.Next();
}
mLastSavedTracks->Clear();
delete mLastSavedTracks;
mLastSavedTracks = NULL;
mLastSavedTracks->Clear(); // sends an event
mLastSavedTracks.reset();
}
// Get rid of the history window
@ -2429,13 +2425,11 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
DestroyChildren();
delete mTrackFactory;
mTrackFactory = NULL;
mTrackFactory.reset();
mTags.reset();
delete mImportXMLTagHandler;
mImportXMLTagHandler = NULL;
mImportXMLTagHandler.reset();
// Unregister for tracklist updates
mTracks->Disconnect(EVT_TRACKLIST_UPDATED,
@ -2445,8 +2439,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
// Delete all the tracks to free up memory and DirManager references.
mTracks->Clear();
delete mTracks;
mTracks = NULL;
mTracks.reset();
// This must be done before the following Deref() since it holds
// references to the DirManager.
@ -2850,7 +2843,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
bool err = false;
Track *t;
TrackListIterator iter(GetTracks());
mLastSavedTracks = new TrackList();
mLastSavedTracks = std::make_unique<TrackList>();
t = iter.First();
while (t) {
@ -2998,11 +2991,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
}
// Clean up now unused recording recovery handler if any
if (mRecordingRecoveryHandler)
{
delete mRecordingRecoveryHandler;
mRecordingRecoveryHandler = NULL;
}
mRecordingRecoveryHandler.reset();
if (!bParseSuccess)
return; // No need to do further processing if parse failed.
@ -3015,7 +3004,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
if(ODManager::HasLoadedODFlag())
{
Track *tr;
TrackListIterator triter(mTracks);
TrackListIterator triter(GetTracks());
tr = triter.First();
std::vector<ODTask*> newTasks;
@ -3318,14 +3307,14 @@ XMLTagHandler *AudacityProject::HandleXMLChild(const wxChar *tag)
if (!wxStrcmp(tag, wxT("recordingrecovery"))) {
if (!mRecordingRecoveryHandler)
mRecordingRecoveryHandler = new RecordingRecoveryHandler(this);
return mRecordingRecoveryHandler;
mRecordingRecoveryHandler = std::make_unique<RecordingRecoveryHandler>(this);
return mRecordingRecoveryHandler.get();
}
if (!wxStrcmp(tag, wxT("import"))) {
if (mImportXMLTagHandler == NULL)
mImportXMLTagHandler = new ImportXMLTagHandler(this);
return mImportXMLTagHandler;
if (!mImportXMLTagHandler)
mImportXMLTagHandler = std::make_unique<ImportXMLTagHandler>(this);
return mImportXMLTagHandler.get();
}
return NULL;
@ -3392,7 +3381,7 @@ void AudacityProject::WriteXML(XMLWriter &xmlFile)
Track *t;
WaveTrack* pWaveTrack;
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
t = iter.First();
unsigned int ndx = 0;
while (t) {
@ -3491,7 +3480,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
wxASSERT(fromSaveAs);
else
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
bool bHasTracks = (iter.First() != NULL);
if (!bHasTracks)
{
@ -3582,7 +3571,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
std::vector<movable_ptr<WaveTrack::Locker>> lockers;
if (mLastSavedTracks && !overwrite) {
lockers.reserve(mLastSavedTracks->size());
TrackListIterator iter(mLastSavedTracks);
TrackListIterator iter(mLastSavedTracks.get());
Track *t = iter.First();
while (t) {
if (t->GetKind() == Track::Wave)
@ -3666,14 +3655,11 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
mDirManager->RemoveOrphanBlockfiles();
}
if (mLastSavedTracks) {
if (mLastSavedTracks)
mLastSavedTracks->Clear();
delete mLastSavedTracks;
}
mLastSavedTracks = std::make_unique<TrackList>();
mLastSavedTracks = new TrackList();
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
mLastSavedTracks->Add(t->Duplicate());
@ -3710,7 +3696,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
// Copy the tracks because we're going to do some state changes before exporting.
Track* pTrack;
WaveTrack* pWaveTrack;
TrackListOfKindIterator iter(Track::Wave, mTracks);
TrackListOfKindIterator iter(Track::Wave, GetTracks());
unsigned int numWaveTracks = 0;
TrackList pSavedTrackList;
@ -3913,7 +3899,7 @@ bool AudacityProject::Import(const wxString &fileName, WaveTrackArray* pTrackArr
TempTags tempTags(mTags);
bool success = Importer::Get().Import(fileName,
mTrackFactory,
GetTrackFactory(),
newTracks,
mTags.get(),
errorMessage);
@ -4099,18 +4085,17 @@ For an audio file that will open in other apps, use 'Export'.\n"),
void AudacityProject::InitialState()
{
if (mImportXMLTagHandler != NULL) {
if (mImportXMLTagHandler) {
// We processed an <import> tag, so save it as a normal project, with no <import> tags.
this->Save();
// Shouldn't need it any more.
delete mImportXMLTagHandler;
mImportXMLTagHandler = NULL;
mImportXMLTagHandler.reset();
}
GetUndoManager()->ClearStates();
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion, mTags,
GetUndoManager()->PushState(GetTracks(), mViewInfo.selectedRegion, mTags,
_("Created new project"), wxT(""));
GetUndoManager()->StateSaved();
@ -4134,7 +4119,7 @@ void AudacityProject::PushState(const wxString &desc,
const wxString &shortDesc,
UndoPush flags )
{
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion, mTags,
GetUndoManager()->PushState(GetTracks(), mViewInfo.selectedRegion, mTags,
desc, shortDesc, flags);
mDirty = true;
@ -4170,7 +4155,7 @@ void AudacityProject::RollbackState()
void AudacityProject::ModifyState(bool bWantsAutoSave)
{
GetUndoManager()->ModifyState(mTracks, mViewInfo.selectedRegion, mTags);
GetUndoManager()->ModifyState(GetTracks(), mViewInfo.selectedRegion, mTags);
if (bWantsAutoSave)
AutoSave();
}
@ -4252,7 +4237,7 @@ void AudacityProject::UpdateLyrics()
if (!mLyricsWindow)
return;
TrackListOfKindIterator iter(Track::Label, mTracks);
TrackListOfKindIterator iter(Track::Label, GetTracks());
LabelTrack* pLabelTrack = (LabelTrack*)(iter.First()); // Lyrics come from only the first label track.
if (!pLabelTrack)
return;
@ -4320,7 +4305,7 @@ void AudacityProject::ClearClipboard()
void AudacityProject::Clear()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *n = iter.First();
@ -4345,7 +4330,7 @@ void AudacityProject::Clear()
void AudacityProject::SelectNone()
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *t = iter.First();
while (t) {
t->SetSelected(false);
@ -4614,7 +4599,7 @@ void AudacityProject::OnTimer(wxTimerEvent& WXUNUSED(event))
//regions memory need to be deleted by the caller
void AudacityProject::GetRegionsByLabel( Regions &regions )
{
TrackListIterator iter( mTracks );
TrackListIterator iter(GetTracks());
Track *n;
//determine labelled regions
@ -4668,7 +4653,7 @@ void AudacityProject::EditByLabel( EditFunction action,
if( regions.size() == 0 )
return;
TrackListIterator iter( mTracks );
TrackListIterator iter(GetTracks());
Track *n;
bool allTracks = true;
@ -4714,7 +4699,7 @@ void AudacityProject::EditClipboardByLabel( EditDestFunction action )
if( regions.size() == 0 )
return;
TrackListIterator iter( mTracks );
TrackListIterator iter(GetTracks());
Track *n;
bool allTracks = true;
@ -5195,7 +5180,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
// "exclusive" mute means mute the chosen track and unmute all others.
if (exclusive)
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *i = iter.First();
while (i) {
if (i == t) {
@ -5219,7 +5204,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
if(t->GetLinked()) // set mute the same on both, if a pair
{
bool muted = t->GetMute();
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *i = iter.First();
while (i != t) { // search for this track
i = iter.Next();
@ -5230,7 +5215,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
if (IsSoloSimple() || IsSoloNone())
{
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *i = iter.First();
int nPlaying=0;
@ -5273,7 +5258,7 @@ void AudacityProject::HandleTrackSolo(Track *t, const bool alternate)
if(t->GetLinked())
{
bool soloed = t->GetSolo();
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *i = iter.First();
while (i != t) { // search for this track
i = iter.Next();
@ -5286,7 +5271,7 @@ void AudacityProject::HandleTrackSolo(Track *t, const bool alternate)
{
// Normal click solo this track only, mute everything else.
// OR unmute and unsolo everything.
TrackListIterator iter(mTracks);
TrackListIterator iter(GetTracks());
Track *i = iter.First();
bool bWasSolo = t->GetSolo();
while (i) {
@ -5417,7 +5402,7 @@ bool AudacityProject::SaveFromTimerRecording(wxFileName fnFile) {
bool AudacityProject::ProjectHasTracks() {
// These two lines test for an 'empty' project.
// of course it could still have a history at this stage.
TrackListIterator iter2(mTracks);
TrackListIterator iter2(GetTracks());
bool bHasTracks = (iter2.First() != NULL);
return bHasTracks;
}

View File

@ -166,7 +166,7 @@ class AUDACITY_DLL_API AudacityProject final : public wxFrame,
AudioIOStartStreamOptions GetDefaultPlayOptions();
TrackList *GetTracks() { return mTracks; }
TrackList *GetTracks() { return mTracks.get(); }
UndoManager *GetUndoManager() { return mUndoManager.get(); }
sampleFormat GetDefaultFormat() { return mDefaultFormat; }
@ -562,14 +562,14 @@ public:
std::shared_ptr<Tags> mTags;
// List of tracks and display info
TrackList *mTracks;
std::unique_ptr<TrackList> mTracks{ std::make_unique<TrackList>() };
int mSnapTo;
wxString mSelectionFormat;
wxString mFrequencySelectionFormatName;
wxString mBandwidthSelectionFormatName;
TrackList *mLastSavedTracks;
std::unique_ptr<TrackList> mLastSavedTracks;
// Clipboard (static because it is shared by all projects)
static std::unique_ptr<TrackList> msClipboard;
@ -592,7 +592,7 @@ public:
// Window elements
wxTimer *mTimer;
std::unique_ptr<wxTimer> mTimer;
long mLastStatusUpdateTime;
wxStatusBar *mStatusBar;
@ -600,7 +600,7 @@ public:
AdornedRulerPanel *mRuler{};
wxPanel *mTopPanel{};
TrackPanel *mTrackPanel{};
TrackFactory *mTrackFactory{};
std::unique_ptr<TrackFactory> mTrackFactory{};
wxPanel * mMainPanel;
wxScrollBar *mHsbar;
wxScrollBar *mVsbar;
@ -664,7 +664,7 @@ public:
// See AudacityProject::OnActivate() for an explanation of this.
wxWindow *mLastFocusedWindow{};
ImportXMLTagHandler* mImportXMLTagHandler{};
std::unique_ptr<ImportXMLTagHandler> mImportXMLTagHandler;
// Last auto-save file name and path (empty if none)
wxString mAutoSaveFileName;
@ -679,7 +679,7 @@ public:
wxString mRecoveryAutoSaveDataDir;
// The handler that handles recovery of <recordingrecovery> tags
RecordingRecoveryHandler* mRecordingRecoveryHandler{};
std::unique_ptr<RecordingRecoveryHandler> mRecordingRecoveryHandler;
// Dependencies have been imported and a warning should be shown on save
bool mImportedDependencies{ false };