mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-22 15:20:15 +02:00
Remove various naked news and deletes
This commit is contained in:
commit
291aff18e1
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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) {
|
||||||
|
@ -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())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user