1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-22 07:10:06 +02:00

Remove various naked news and deletes

This commit is contained in:
Paul Licameli 2016-08-13 10:38:10 -04:00
commit 291aff18e1
28 changed files with 88 additions and 104 deletions

View File

@ -1174,7 +1174,11 @@ bool AudacityApp::OnInit()
// Ensure we have an event loop during initialization // Ensure we have an event loop during initialization
wxEventLoopGuarantor eventLoop; wxEventLoopGuarantor eventLoop;
std::unique_ptr < wxLog > { wxLog::SetActiveTarget(new AudacityLogger) }; // DELETE // wxWidgets will clean up the logger for the main thread, so we can say
// safenew. See:
// http://docs.wxwidgets.org/3.0/classwx_log.html#a2525bf54fa3f31dc50e6e3cd8651e71d
std::unique_ptr < wxLog >
{ wxLog::SetActiveTarget(safenew AudacityLogger) }; // DELETE old
mLocale = NULL; mLocale = NULL;

View File

@ -51,7 +51,6 @@ AudacityLogger::AudacityLogger()
: wxEvtHandler(), : wxEvtHandler(),
wxLog() wxLog()
{ {
mFrame = NULL;
mText = NULL; mText = NULL;
mUpdated = false; mUpdated = false;
} }
@ -97,48 +96,44 @@ void AudacityLogger::DoLogText(const wxString & str)
void AudacityLogger::Destroy() void AudacityLogger::Destroy()
{ {
if (mFrame) { if (mFrame) {
wxFrame *frame = mFrame; mFrame->Disconnect(LoggerID_Save,
mFrame = NULL;
mText = NULL;
frame->Disconnect(LoggerID_Save,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnSave), wxCommandEventHandler(AudacityLogger::OnSave),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Clear, mFrame->Disconnect(LoggerID_Clear,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnClear), wxCommandEventHandler(AudacityLogger::OnClear),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Close, mFrame->Disconnect(LoggerID_Close,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnClose), wxCommandEventHandler(AudacityLogger::OnClose),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Save, mFrame->Disconnect(LoggerID_Save,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnSave), wxCommandEventHandler(AudacityLogger::OnSave),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Clear, mFrame->Disconnect(LoggerID_Clear,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnClear), wxCommandEventHandler(AudacityLogger::OnClear),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Close, mFrame->Disconnect(LoggerID_Close,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnClose), wxCommandEventHandler(AudacityLogger::OnClose),
NULL, NULL,
this); this);
frame->Disconnect(wxEVT_CLOSE_WINDOW, mFrame->Disconnect(wxEVT_CLOSE_WINDOW,
wxCloseEventHandler(AudacityLogger::OnCloseWindow), wxCloseEventHandler(AudacityLogger::OnCloseWindow),
NULL, NULL,
this); this);
frame->Destroy(); mFrame.reset();
} }
} }
@ -165,7 +160,8 @@ void AudacityLogger::Show(bool show)
} }
// This is the first use, so create the frame // This is the first use, so create the frame
wxFrame *frame = new wxFrame(NULL, wxID_ANY, _("Audacity Log")); Destroy_ptr<wxFrame> frame
{ safenew wxFrame(NULL, wxID_ANY, _("Audacity Log")) };
frame->SetName(frame->GetTitle()); frame->SetName(frame->GetTitle());
frame->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); frame->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
@ -185,7 +181,7 @@ void AudacityLogger::Show(bool show)
} }
// Log text // Log text
ShuttleGui S(frame, eIsCreating); ShuttleGui S(frame.get(), eIsCreating);
S.SetStyle(wxNO_BORDER | wxTAB_TRAVERSAL); S.SetStyle(wxNO_BORDER | wxTAB_TRAVERSAL);
S.Prop(true).StartPanel(); S.Prop(true).StartPanel();
@ -254,7 +250,7 @@ void AudacityLogger::Show(bool show)
NULL, NULL,
this); this);
mFrame = frame; mFrame = std::move( frame );
mFrame->Show(); mFrame->Show();
@ -302,7 +298,7 @@ void AudacityLogger::OnSave(wxCommandEvent & WXUNUSED(e))
wxT("txt"), wxT("txt"),
wxT("*.txt"), wxT("*.txt"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER, wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER,
mFrame); mFrame.get());
if (fName == wxEmptyString) { if (fName == wxEmptyString) {
return; return;
@ -312,7 +308,7 @@ void AudacityLogger::OnSave(wxCommandEvent & WXUNUSED(e))
wxMessageBox(_("Couldn't save log to file: ") + fName, wxMessageBox(_("Couldn't save log to file: ") + fName,
_("Warning"), _("Warning"),
wxICON_EXCLAMATION, wxICON_EXCLAMATION,
mFrame); mFrame.get());
return; return;
} }
} }

View File

@ -16,6 +16,7 @@
#include "Audacity.h" #include "Audacity.h"
#include "MemoryX.h"
#include <wx/event.h> #include <wx/event.h>
#include <wx/log.h> #include <wx/log.h>
#include <wx/frame.h> #include <wx/frame.h>
@ -46,7 +47,7 @@ class AudacityLogger final : public wxEvtHandler, public wxLog {
void OnClear(wxCommandEvent & e); void OnClear(wxCommandEvent & e);
void OnSave(wxCommandEvent & e); void OnSave(wxCommandEvent & e);
wxFrame *mFrame; Destroy_ptr<wxFrame> mFrame;
wxTextCtrl *mText; wxTextCtrl *mText;
wxString mBuffer; wxString mBuffer;
bool mUpdated; bool mUpdated;

View File

@ -1416,7 +1416,8 @@ bool WaveClip::Paste(double t0, const WaveClip* other)
if (clipNeedsResampling || clipNeedsNewFormat) if (clipNeedsResampling || clipNeedsNewFormat)
{ {
newClip.reset(new WaveClip(*other, mSequence->GetDirManager())); newClip =
std::make_unique<WaveClip>(*other, mSequence->GetDirManager());
if (clipNeedsResampling) if (clipNeedsResampling)
// The other clip's rate is different from ours, so resample // The other clip's rate is different from ours, so resample
if (!newClip->Resample(mRate)) if (!newClip->Resample(mRate))
@ -1502,7 +1503,7 @@ bool WaveClip::Clear(double t0, double t1)
if (clip_t1 > GetEndTime()) if (clip_t1 > GetEndTime())
clip_t1 = GetEndTime(); clip_t1 = GetEndTime();
// May delete as we iterate, so don't use range-for // May DELETE as we iterate, so don't use range-for
for (auto it = mCutLines.begin(); it != mCutLines.end();) for (auto it = mCutLines.begin(); it != mCutLines.end();)
{ {
WaveClip* clip = it->get(); WaveClip* clip = it->get();
@ -1554,7 +1555,7 @@ bool WaveClip::ClearAndAddCutLine(double t0, double t1)
newClip->SetOffset(clip_t0-mOffset); newClip->SetOffset(clip_t0-mOffset);
// Sort out cutlines that belong to the NEW cutline // Sort out cutlines that belong to the NEW cutline
// May delete as we iterate, so don't use range-for // May DELETE as we iterate, so don't use range-for
for (auto it = mCutLines.begin(); it != mCutLines.end();) for (auto it = mCutLines.begin(); it != mCutLines.end();)
{ {
WaveClip* clip = it->get(); WaveClip* clip = it->get();

View File

@ -413,7 +413,6 @@ private:
CommandManager::CommandManager(): CommandManager::CommandManager():
mCurrentID(17000), mCurrentID(17000),
mCurrentMenuName(COMMAND), mCurrentMenuName(COMMAND),
mCurrentMenu(NULL),
mDefaultFlags(AlwaysEnabledFlag), mDefaultFlags(AlwaysEnabledFlag),
mDefaultMask(AlwaysEnabledFlag) mDefaultMask(AlwaysEnabledFlag)
{ {
@ -442,7 +441,6 @@ void CommandManager::PurgeData()
mCommandKeyHash.clear(); mCommandKeyHash.clear();
mCommandIDHash.clear(); mCommandIDHash.clear();
mCurrentMenu = NULL;
mCurrentMenuName = COMMAND; mCurrentMenuName = COMMAND;
mCurrentID = 0; mCurrentID = 0;
} }
@ -504,9 +502,7 @@ wxMenuBar * CommandManager::CurrentMenuBar() const
/// ///
void CommandManager::BeginMenu(const wxString & tName) void CommandManager::BeginMenu(const wxString & tName)
{ {
wxMenu *tmpMenu = new wxMenu(); mCurrentMenu = std::make_unique<wxMenu>();
mCurrentMenu = tmpMenu;
mCurrentMenuName = tName; mCurrentMenuName = tName;
} }
@ -519,8 +515,7 @@ void CommandManager::EndMenu()
// Add the menu to the menubar after all menu items have been // Add the menu to the menubar after all menu items have been
// added to the menu to allow OSX to rearrange special menu // added to the menu to allow OSX to rearrange special menu
// items like Preferences, About, and Quit. // items like Preferences, About, and Quit.
CurrentMenuBar()->Append(mCurrentMenu, mCurrentMenuName); CurrentMenuBar()->Append(mCurrentMenu.release(), mCurrentMenuName);
mCurrentMenu = NULL;
mCurrentMenuName = COMMAND; mCurrentMenuName = COMMAND;
} }
@ -530,14 +525,10 @@ void CommandManager::EndMenu()
/// the function's argument. /// the function's argument.
wxMenu* CommandManager::BeginSubMenu(const wxString & tName) wxMenu* CommandManager::BeginSubMenu(const wxString & tName)
{ {
const auto result = new wxMenu{}; mSubMenuList.push_back
#ifdef __AUDACITY_OLD_STD__ (make_movable< SubMenuListEntry > ( tName, std::make_unique<wxMenu>() ));
mSubMenuList.push_back(SubMenuListEntry{ tName, result });
#else
mSubMenuList.emplace_back(tName, result);
#endif
mbSeparatorAllowed = false; mbSeparatorAllowed = false;
return result; return mSubMenuList.back()->menu.get();
} }
@ -548,13 +539,14 @@ wxMenu* CommandManager::BeginSubMenu(const wxString & tName)
void CommandManager::EndSubMenu() void CommandManager::EndSubMenu()
{ {
//Save the submenu's information //Save the submenu's information
SubMenuListEntry tmpSubMenu = mSubMenuList.back(); SubMenuListEntry tmpSubMenu { std::move( *mSubMenuList.back() ) };
//Pop off the NEW submenu so CurrentMenu returns the parent of the submenu //Pop off the NEW submenu so CurrentMenu returns the parent of the submenu
mSubMenuList.pop_back(); mSubMenuList.pop_back();
//Add the submenu to the current menu //Add the submenu to the current menu
CurrentMenu()->Append(0, tmpSubMenu.name, tmpSubMenu.menu, tmpSubMenu.name); CurrentMenu()->Append
(0, tmpSubMenu.name, tmpSubMenu.menu.release(), tmpSubMenu.name);
mbSeparatorAllowed = true; mbSeparatorAllowed = true;
} }
@ -567,7 +559,7 @@ wxMenu * CommandManager::CurrentSubMenu() const
if(mSubMenuList.empty()) if(mSubMenuList.empty())
return NULL; return NULL;
return mSubMenuList.back().menu; return mSubMenuList.back()->menu.get();
} }
/// ///
@ -583,7 +575,7 @@ wxMenu * CommandManager::CurrentMenu() const
if(!tmpCurrentSubMenu) if(!tmpCurrentSubMenu)
{ {
return mCurrentMenu; return mCurrentMenu.get();
} }
return tmpCurrentSubMenu; return tmpCurrentSubMenu;
@ -834,7 +826,7 @@ CommandListEntry *CommandManager::NewIdentifier(const wxString & name,
wxString labelPrefix; wxString labelPrefix;
if (!mSubMenuList.empty()) { if (!mSubMenuList.empty()) {
labelPrefix = mSubMenuList.back().name; labelPrefix = mSubMenuList.back()->name;
} }
// wxMac 2.5 and higher will do special things with the // wxMac 2.5 and higher will do special things with the

View File

@ -40,12 +40,14 @@ struct MenuBarListEntry
struct SubMenuListEntry struct SubMenuListEntry
{ {
SubMenuListEntry(const wxString &name_, wxMenu *menu_) SubMenuListEntry(const wxString &name_, std::unique_ptr<wxMenu> &&menu_)
: name(name_), menu(menu_) : name(name_), menu( std::move(menu_) )
{} {}
// SubMenuListEntry( SubMenuListEntry&& ) = default;
wxString name; wxString name;
wxMenu *menu; std::unique_ptr<wxMenu> menu;
}; };
struct CommandListEntry struct CommandListEntry
@ -71,7 +73,9 @@ struct CommandListEntry
}; };
using MenuBarList = std::vector < MenuBarListEntry >; using MenuBarList = std::vector < MenuBarListEntry >;
using SubMenuList = std::vector < SubMenuListEntry >;
// to do: remove the extra indirection when Mac compiler moves to newer version
using SubMenuList = std::vector < movable_ptr<SubMenuListEntry> >;
// This is an array of pointers, not structures, because the hash maps also point to them, // This is an array of pointers, not structures, because the hash maps also point to them,
// so we don't want the structures to relocate with vector operations. // so we don't want the structures to relocate with vector operations.
@ -109,9 +113,6 @@ class AUDACITY_DLL_API CommandManager final : public XMLTagHandler
wxMenu* BeginSubMenu(const wxString & tName); wxMenu* BeginSubMenu(const wxString & tName);
void EndSubMenu(); void EndSubMenu();
void SetToMenu( wxMenu * menu ){
mCurrentMenu = menu;
};
void InsertItem(const wxString & name, void InsertItem(const wxString & name,
const wxString & label, const wxString & label,
@ -311,7 +312,7 @@ private:
bool mbSeparatorAllowed; // false at the start of a menu and immediately after a separator. bool mbSeparatorAllowed; // false at the start of a menu and immediately after a separator.
wxString mCurrentMenuName; wxString mCurrentMenuName;
wxMenu * mCurrentMenu; std::unique_ptr<wxMenu> mCurrentMenu;
CommandFlag mDefaultFlags; CommandFlag mDefaultFlags;
CommandMask mDefaultMask; CommandMask mDefaultMask;

View File

@ -384,7 +384,7 @@ bool EffectAutoDuck::Process()
if (!cancel) if (!cancel)
{ {
CopyInputTracks(); // Set up mOutputTracks. CopyInputTracks(); // Set up mOutputTracks.
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
Track *iterTrack = iter.First(); Track *iterTrack = iter.First();
int trackNumber = 0; int trackNumber = 0;

View File

@ -218,7 +218,7 @@ bool EffectChangeSpeed::Process()
CopyInputTracks(Track::All); // Set up mOutputTracks. CopyInputTracks(Track::All); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
Track* t; Track* t;
mCurTrackNum = 0; mCurTrackNum = 0;
mMaxNewLength = 0.0; mMaxNewLength = 0.0;

View File

@ -162,7 +162,7 @@ bool EffectClickRemoval::Process()
bool bGoodResult = true; bool bGoodResult = true;
mbDidSomething = false; mbDidSomething = false;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
int count = 0; int count = 0;
while (track) { while (track) {

View File

@ -94,7 +94,6 @@ Effect::Effect()
mWarper = NULL; mWarper = NULL;
mTracks = NULL; mTracks = NULL;
mOutputTracks = NULL;
mOutputTracksType = Track::None; mOutputTracksType = Track::None;
mT0 = 0.0; mT0 = 0.0;
mT1 = 0.0; mT1 = 0.0;
@ -136,11 +135,6 @@ Effect::Effect()
Effect::~Effect() Effect::~Effect()
{ {
if (mOutputTracks)
{
delete mOutputTracks;
}
if (mUIDialog) if (mUIDialog)
{ {
mUIDialog->Close(); mUIDialog->Close();
@ -1168,11 +1162,7 @@ bool Effect::DoEffect(wxWindow *parent,
{ {
wxASSERT(selectedRegion->duration() >= 0.0); wxASSERT(selectedRegion->duration() >= 0.0);
if (mOutputTracks) mOutputTracks.reset();
{
delete mOutputTracks;
mOutputTracks = NULL;
}
mFactory = factory; mFactory = factory;
mProjectRate = projectRate; mProjectRate = projectRate;
@ -1244,11 +1234,7 @@ bool Effect::DoEffect(wxWindow *parent,
End(); End();
if (mOutputTracks) mOutputTracks.reset();
{
delete mOutputTracks;
mOutputTracks = NULL;
}
if (returnVal) if (returnVal)
{ {
@ -1327,7 +1313,7 @@ bool Effect::ProcessPass()
mBufferSize = 0; mBufferSize = 0;
mBlockSize = 0; mBlockSize = 0;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
int count = 0; int count = 0;
bool clear = false; bool clear = false;
Track* t = iter.First(); Track* t = iter.First();
@ -2079,7 +2065,7 @@ void Effect::CopyInputTracks(int trackType)
mIMap.Clear(); mIMap.Clear();
mOMap.Clear(); mOMap.Clear();
mOutputTracks = new TrackList(); mOutputTracks = std::make_unique<TrackList>();
mOutputTracksType = trackType; mOutputTracksType = trackType;
//iterate over tracks of type trackType (All types if Track::All) //iterate over tracks of type trackType (All types if Track::All)
@ -2201,7 +2187,7 @@ auto Effect::ModifyAnalysisTrack
// Else clear and DELETE mOutputTracks copies. // Else clear and DELETE mOutputTracks copies.
void Effect::ReplaceProcessedTracks(const bool bGoodResult) 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) { if (!bGoodResult) {
// Processing failed or was cancelled so throw away the processed tracks. // Processing failed or was cancelled so throw away the processed tracks.
@ -2277,8 +2263,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult)
wxASSERT(mOutputTracks->empty()); wxASSERT(mOutputTracks->empty());
// The output list is no longer needed // The output list is no longer needed
delete mOutputTracks; mOutputTracks.reset();
mOutputTracks = NULL;
mOutputTracksType = Track::None; mOutputTracksType = Track::None;
} }
@ -2665,8 +2650,7 @@ void Effect::Preview(bool dryOnly)
FocusDialog->SetFocus(); FocusDialog->SetFocus();
} }
delete mOutputTracks; mOutputTracks.reset();
mOutputTracks = NULL;
mTracks->Clear(); mTracks->Clear();
delete mTracks; delete mTracks;

View File

@ -439,7 +439,7 @@ protected:
double mSampleRate; double mSampleRate;
TrackFactory *mFactory; TrackFactory *mFactory;
TrackList *mTracks; // the complete list of all tracks 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 mT0;
double mT1; double mT1;
#ifdef EXPERIMENTAL_SPECTRAL_EDITING #ifdef EXPERIMENTAL_SPECTRAL_EDITING

View File

@ -538,7 +538,7 @@ bool EffectEqualization::Process()
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
int count = 0; int count = 0;
while (track) { while (track) {

View File

@ -353,7 +353,10 @@ bool EffectEqualization48x::TrackCompare()
} }
for(int i=0;i<2;i++) { 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; i?sMathPath=sMathPath:sMathPath=0;
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
int count = 0; int count = 0;
@ -375,7 +378,8 @@ bool EffectEqualization48x::TrackCompare()
count++; count++;
} }
} }
SelectedTrackListOfKindIterator iter(Track::Wave, mEffectEqualization->mOutputTracks); SelectedTrackListOfKindIterator
iter(Track::Wave, mEffectEqualization->mOutputTracks.get());
SelectedTrackListOfKindIterator iter2(Track::Wave, &SecondOutputTracks); SelectedTrackListOfKindIterator iter2(Track::Wave, &SecondOutputTracks);
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
WaveTrack *track2 = (WaveTrack *) iter2.First(); WaveTrack *track2 = (WaveTrack *) iter2.First();
@ -440,7 +444,8 @@ bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
if(sMathPath) // !!! Filter MUST BE QUAD WORD ALIGNED !!!! if(sMathPath) // !!! Filter MUST BE QUAD WORD ALIGNED !!!!
mEffectEqualization->mM=(mEffectEqualization->mM&(~15))+1; mEffectEqualization->mM=(mEffectEqualization->mM&(~15))+1;
AllocateBuffersWorkers(MATH_FUNCTION_THREADED); AllocateBuffersWorkers(MATH_FUNCTION_THREADED);
SelectedTrackListOfKindIterator iter(Track::Wave, mEffectEqualization->mOutputTracks); SelectedTrackListOfKindIterator
iter(Track::Wave, mEffectEqualization->mOutputTracks.get());
long times[] = { 0,0,0,0,0 }; long times[] = { 0,0,0,0,0 };
wxStopWatch timer; wxStopWatch timer;
mBenching=true; mBenching=true;

View File

@ -37,7 +37,7 @@ bool Generator::Process()
// Iterate over the tracks // Iterate over the tracks
bool bGoodResult = true; bool bGoodResult = true;
int ntrack = 0; int ntrack = 0;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
Track* t = iter.First(); Track* t = iter.First();
while (t != NULL) while (t != NULL)

View File

@ -600,7 +600,7 @@ bool EffectNoiseReduction::Process()
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
if (!track) if (!track)
return false; return false;

View File

@ -212,7 +212,7 @@ bool EffectNoiseRemoval::Process()
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
int count = 0; int count = 0;
while (track) { while (track) {

View File

@ -159,7 +159,7 @@ bool EffectNormalize::Process()
//Iterate over each track //Iterate over each track
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
WaveTrack *prevTrack; WaveTrack *prevTrack;
prevTrack = track; prevTrack = track;

View File

@ -150,7 +150,7 @@ double EffectPaulstretch::CalcPreviewInputLength(double previewLength)
bool EffectPaulstretch::Process() bool EffectPaulstretch::Process()
{ {
CopyInputTracks(); CopyInputTracks();
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
m_t1=mT1; m_t1=mT1;
int count=0; int count=0;

View File

@ -74,7 +74,7 @@ bool EffectRepair::Process()
this->CopyInputTracks(); // Set up mOutputTracks. //v This may be too much copying for EffectRepair. this->CopyInputTracks(); // Set up mOutputTracks. //v This may be too much copying for EffectRepair.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
int count = 0; int count = 0;
while (track) { while (track) {

View File

@ -104,7 +104,7 @@ bool EffectRepeat::Process()
bool bGoodResult = true; bool bGoodResult = true;
double maxDestLen = 0.0; // used to change selection to generated bit 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()) for (Track *t = iter.First(); t && bGoodResult; t = iter.Next())
{ {

View File

@ -68,7 +68,7 @@ bool EffectReverse::Process()
this->CopyInputTracks(Track::All); // Set up mOutputTracks. this->CopyInputTracks(Track::All); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
Track *t = iter.First(); Track *t = iter.First();
int count = 0; int count = 0;
while (t) { while (t) {

View File

@ -209,7 +209,7 @@ bool EffectSBSMS::Process()
//Iterate over each track //Iterate over each track
//Track::All is needed because this effect needs to introduce silence in the group tracks to keep sync //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. this->CopyInputTracks(Track::All); // Set up mOutputTracks.
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
Track* t; Track* t;
mCurTrackNum = 0; mCurTrackNum = 0;

View File

@ -32,7 +32,7 @@ bool EffectSimpleMono::Process()
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack* pOutWaveTrack = (WaveTrack*)(iter.First()); WaveTrack* pOutWaveTrack = (WaveTrack*)(iter.First());
mCurTrackNum = 0; mCurTrackNum = 0;
while (pOutWaveTrack != NULL) while (pOutWaveTrack != NULL)

View File

@ -64,7 +64,7 @@ bool EffectSoundTouch::Process()
this->CopyInputTracks(Track::All); this->CopyInputTracks(Track::All);
bool bGoodResult = true; bool bGoodResult = true;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
Track* t; Track* t;
mCurTrackNum = 0; mCurTrackNum = 0;
m_maxNewLength = 0.0; m_maxNewLength = 0.0;

View File

@ -75,7 +75,7 @@ bool EffectStereoToMono::Process()
this->CopyInputTracks(); // Set up mOutputTracks. this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true; bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
mLeftTrack = (WaveTrack *)iter.First(); mLeftTrack = (WaveTrack *)iter.First();
bool refreshIter = false; bool refreshIter = false;

View File

@ -305,7 +305,7 @@ bool EffectTruncSilence::ProcessIndependently()
{ {
unsigned iGroup = 0; unsigned iGroup = 0;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
for (Track *track = iter.First(); track; for (Track *track = iter.First(); track;
++iGroup, track = iter.Next(true) // skip linked tracks ++iGroup, track = iter.Next(true) // skip linked tracks
) { ) {
@ -314,12 +314,12 @@ bool EffectTruncSilence::ProcessIndependently()
RegionList silences; RegionList silences;
if (!FindSilences(silences, mOutputTracks, track, last)) if (!FindSilences(silences, mOutputTracks.get(), track, last))
return false; return false;
// Treat tracks in the sync lock group only // Treat tracks in the sync lock group only
Track *groupFirst, *groupLast; Track *groupFirst, *groupLast;
if (syncLock) { if (syncLock) {
SyncLockedTracksIterator syncIter(mOutputTracks); SyncLockedTracksIterator syncIter(mOutputTracks.get());
groupFirst = syncIter.StartWith(track); groupFirst = syncIter.StartWith(track);
groupLast = syncIter.Last(); groupLast = syncIter.Last();
} }
@ -350,7 +350,7 @@ bool EffectTruncSilence::ProcessAll()
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
if (FindSilences(silences, mTracks, iter.First(), iter.Last())) { if (FindSilences(silences, mTracks, iter.First(), iter.Last())) {
TrackListIterator iterOut(mOutputTracks); TrackListIterator iterOut(mOutputTracks.get());
double totalCutLen = 0.0; double totalCutLen = 0.0;
Track *const first = iterOut.First(); Track *const first = iterOut.First();
if (DoRemoval(silences, 0, 1, first, iterOut.Last(), totalCutLen)) { if (DoRemoval(silences, 0, 1, first, iterOut.Last(), totalCutLen)) {
@ -469,7 +469,7 @@ bool EffectTruncSilence::DoRemoval
double cutLen = inLength - outLength; double cutLen = inLength - outLength;
totalCutLen += cutLen; totalCutLen += cutLen;
TrackListIterator iterOut(mOutputTracks); TrackListIterator iterOut(mOutputTracks.get());
bool lastSeen = false; bool lastSeen = false;
for (Track *t = iterOut.StartWith(firstTrack); t && !lastSeen; t = iterOut.Next()) for (Track *t = iterOut.StartWith(firstTrack); t && !lastSeen; t = iterOut.Next())
{ {

View File

@ -47,7 +47,7 @@ bool EffectTwoPassSimpleMono::Process()
bool EffectTwoPassSimpleMono::ProcessPass() bool EffectTwoPassSimpleMono::ProcessPass()
{ {
//Iterate over each track //Iterate over each track
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
WaveTrack *track = (WaveTrack *) iter.First(); WaveTrack *track = (WaveTrack *) iter.First();
mCurTrackNum = 0; mCurTrackNum = 0;
while (track) { while (track) {

View File

@ -456,7 +456,7 @@ bool NyquistEffect::Process()
// correct sync-lock group behavior when the timeline is affected; then we just want // correct sync-lock group behavior when the timeline is affected; then we just want
// to operate on the selected wave tracks // to operate on the selected wave tracks
CopyInputTracks(Track::All); CopyInputTracks(Track::All);
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks); SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
mCurTrack[0] = (WaveTrack *) iter.First(); mCurTrack[0] = (WaveTrack *) iter.First();
mOutputTime = 0; mOutputTime = 0;
mCount = 0; mCount = 0;
@ -472,7 +472,7 @@ bool NyquistEffect::Process()
mTrackIndex = 0; mTrackIndex = 0;
mNumSelectedChannels = 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()) { for (WaveTrack *t = (WaveTrack *) sel.First(); t; t = (WaveTrack *) sel.Next()) {
mNumSelectedChannels++; mNumSelectedChannels++;
if (mT1 >= mT0) { if (mT1 >= mT0) {
@ -620,7 +620,7 @@ bool NyquistEffect::Process()
} }
// Check whether we're in the same group as the last selected track // 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]); Track *gt = gIter.StartWith(mCurTrack[0]);
mFirstInGroup = !gtLast || (gtLast != gt); mFirstInGroup = !gtLast || (gtLast != gt);
gtLast = gt; gtLast = gt;
@ -1110,7 +1110,7 @@ bool NyquistEffect::ProcessOne()
unsigned int l; unsigned int l;
LabelTrack *ltrack = NULL; LabelTrack *ltrack = NULL;
TrackListIterator iter(mOutputTracks); TrackListIterator iter(mOutputTracks.get());
for (Track *t = iter.First(); t; t = iter.Next()) { for (Track *t = iter.First(); t; t = iter.Next()) {
if (t->GetKind() == Track::Label) { if (t->GetKind() == Track::Label) {
ltrack = (LabelTrack *)t; ltrack = (LabelTrack *)t;
@ -1225,7 +1225,7 @@ bool NyquistEffect::ProcessOne()
// If we were first in the group adjust non-selected group tracks // If we were first in the group adjust non-selected group tracks
if (mFirstInGroup) { if (mFirstInGroup) {
SyncLockedTracksIterator git(mOutputTracks); SyncLockedTracksIterator git(mOutputTracks.get());
Track *t; Track *t;
for (t = git.StartWith(mCurTrack[i]); t; t = git.Next()) for (t = git.StartWith(mCurTrack[i]); t; t = git.Next())
{ {