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:
parent
60260520dc
commit
cfd7648fce
@ -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 ®ion, 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;
|
||||
|
||||
|
117
src/Project.cpp
117
src/Project.cpp
@ -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 ®ions )
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
@ -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 };
|
||||
|
Loading…
x
Reference in New Issue
Block a user