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

Remove naked new[] in: ondemand, toolbars, widgets

This commit is contained in:
Paul Licameli 2016-04-14 01:50:34 -04:00
parent 089e696cab
commit 0113e6f44f
7 changed files with 50 additions and 104 deletions

@ -124,7 +124,7 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
mDecoder->mDecodeBufferWritePosition+=bytesToCopy; mDecoder->mDecodeBufferWritePosition+=bytesToCopy;
/* /*
short *tmp=new short[frame->header.blocksize]; ArrayOf<short> tmp{ frame->header.blocksize };
for (unsigned int chn=0; chn<mDecoder->mNumChannels; chn++) { for (unsigned int chn=0; chn<mDecoder->mNumChannels; chn++) {
if (frame->header.bits_per_sample == 16) { if (frame->header.bits_per_sample == 16) {
@ -132,7 +132,7 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
tmp[s]=buffer[chn][s]; tmp[s]=buffer[chn][s];
} }
mDecoder->mChannels[chn]->Append((samplePtr)tmp, mDecoder->mChannels[chn]->Append((samplePtr)tmp.get(),
int16Sample, int16Sample,
frame->header.blocksize); frame->header.blocksize);
} }
@ -142,8 +142,6 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
frame->header.blocksize); frame->header.blocksize);
} }
} }
delete [] tmp;
*/ */
mDecoder->mSamplesDone += frame->header.blocksize; mDecoder->mSamplesDone += frame->header.blocksize;

@ -83,8 +83,7 @@ void MeterToolBar::Create(wxWindow * parent)
void MeterToolBar::ReCreateButtons() void MeterToolBar::ReCreateButtons()
{ {
void *playState = NULL; Meter::State playState{ false }, recordState{ false };
void *recordState = NULL;
if (mPlayMeter && mProject->GetPlaybackMeter() == mPlayMeter) if (mPlayMeter && mProject->GetPlaybackMeter() == mPlayMeter)
{ {
@ -100,15 +99,8 @@ void MeterToolBar::ReCreateButtons()
ToolBar::ReCreateButtons(); ToolBar::ReCreateButtons();
if (playState)
{
mPlayMeter->RestoreState(playState); mPlayMeter->RestoreState(playState);
}
if (recordState)
{
mRecordMeter->RestoreState(recordState); mRecordMeter->RestoreState(recordState);
}
} }
void MeterToolBar::Populate() void MeterToolBar::Populate()

@ -113,17 +113,15 @@ wxString MeterUpdateMsg::toStringIfClipped()
// without needing mutexes. // without needing mutexes.
// //
MeterUpdateQueue::MeterUpdateQueue(int maxLen): MeterUpdateQueue::MeterUpdateQueue(size_t maxLen):
mBufferSize(maxLen) mBufferSize(maxLen)
{ {
mBuffer = new MeterUpdateMsg[mBufferSize];
Clear(); Clear();
} }
// destructor // destructor
MeterUpdateQueue::~MeterUpdateQueue() MeterUpdateQueue::~MeterUpdateQueue()
{ {
delete[] mBuffer;
} }
void MeterUpdateQueue::Clear() void MeterUpdateQueue::Clear()
@ -1857,27 +1855,23 @@ void Meter::OnAudioIOStatus(wxCommandEvent &evt)
// SaveState() and RestoreState() exist solely for purpose of recreating toolbars // SaveState() and RestoreState() exist solely for purpose of recreating toolbars
// They should really be quering the project for current audio I/O state, but there // They should really be quering the project for current audio I/O state, but there
// isn't a clear way of doing that just yet. (It should NOT query AudioIO.) // isn't a clear way of doing that just yet. (It should NOT query AudioIO.)
void *Meter::SaveState() auto Meter::SaveState() -> State
{ {
bool *state = new bool[2]; return { true, mMonitoring, mActive };
state[0] = mMonitoring;
state[1] = mActive;
return state;
} }
void Meter::RestoreState(void *state) void Meter::RestoreState(const State &state)
{ {
bool *s = (bool *)state; if (!state.mSaved)
mMonitoring = s[0]; return;
mActive = s[1];
mMonitoring = state.mMonitoring;
mActive = state.mActive;
if (mActive) if (mActive)
{ {
mTimer.Start(1000 / mMeterRefreshRate); mTimer.Start(1000 / mMeterRefreshRate);
} }
delete [] s;
} }
// //

@ -68,7 +68,7 @@ class MeterUpdateMsg
class MeterUpdateQueue class MeterUpdateQueue
{ {
public: public:
MeterUpdateQueue(int maxLen); explicit MeterUpdateQueue(size_t maxLen);
~MeterUpdateQueue(); ~MeterUpdateQueue();
bool Put(MeterUpdateMsg &msg); bool Put(MeterUpdateMsg &msg);
@ -79,8 +79,8 @@ class MeterUpdateQueue
private: private:
int mStart; int mStart;
int mEnd; int mEnd;
int mBufferSize; size_t mBufferSize;
MeterUpdateMsg *mBuffer; ArrayOf<MeterUpdateMsg> mBuffer{mBufferSize};
}; };
class MeterAx; class MeterAx;
@ -176,9 +176,10 @@ class Meter final : public wxPanelWrapper
void StartMonitoring(); void StartMonitoring();
// These exist solely for the purpose of reseting the toolbars // These exist solely for the purpose of resetting the toolbars
void *SaveState(); struct State{ bool mSaved, mMonitoring, mActive; };
void RestoreState(void *state); State SaveState();
void RestoreState(const State &state);
private: private:
static bool s_AcceptsFocus; static bool s_AcceptsFocus;

@ -69,7 +69,6 @@ MultiDialog::MultiDialog(wxWindow * pParent,
{ {
SetName(GetTitle()); SetName(GetTitle());
wxString *buttonLabels;
wxBoxSizer *mainSizer; wxBoxSizer *mainSizer;
{ {
auto uMainSizer = std::make_unique<wxBoxSizer>(wxVERTICAL); auto uMainSizer = std::make_unique<wxBoxSizer>(wxVERTICAL);
@ -92,10 +91,9 @@ MultiDialog::MultiDialog(wxWindow * pParent,
vSizer->Add(iconAndTextSizer.release(), 0, wxALIGN_LEFT | wxALL, 5); vSizer->Add(iconAndTextSizer.release(), 0, wxALIGN_LEFT | wxALL, 5);
} }
size_t count = 0;
int count = 0;
while (buttons[count])count++; while (buttons[count])count++;
buttonLabels = new wxString[count]; ArrayOf<wxString> buttonLabels{ count };
count = 0; count = 0;
while (buttons[count]){ while (buttons[count]){
@ -106,7 +104,7 @@ MultiDialog::MultiDialog(wxWindow * pParent,
mRadioBox = safenew wxRadioBox(this, -1, mRadioBox = safenew wxRadioBox(this, -1,
boxMsg, boxMsg,
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
count, buttonLabels, count, buttonLabels.get(),
1, wxRA_SPECIFY_COLS); 1, wxRA_SPECIFY_COLS);
mRadioBox->SetName(boxMsg); mRadioBox->SetName(boxMsg);
mRadioBox->SetSelection(0); mRadioBox->SetSelection(0);
@ -143,7 +141,6 @@ MultiDialog::MultiDialog(wxWindow * pParent,
mainSizer->Fit(this); mainSizer->Fit(this);
mainSizer->SetSizeHints(this); mainSizer->SetSizeHints(this);
delete[] buttonLabels;
} }
void MultiDialog::OnOK(wxCommandEvent & WXUNUSED(event)) void MultiDialog::OnOK(wxCommandEvent & WXUNUSED(event))

@ -144,13 +144,8 @@ Ruler::Ruler()
mUserFonts = false; mUserFonts = false;
mMajorLabels = 0;
mMinorLabels = 0;
mMinorMinorLabels = 0;
mLengthOld = 0; mLengthOld = 0;
mLength = 0; mLength = 0;
mBits = NULL;
mUserBits = NULL;
mUserBitLen = 0; mUserBitLen = 0;
mValid = false; mValid = false;
@ -170,15 +165,6 @@ Ruler::Ruler()
Ruler::~Ruler() Ruler::~Ruler()
{ {
Invalidate(); // frees up our arrays Invalidate(); // frees up our arrays
if( mUserBits )
delete [] mUserBits;//JKC
if (mMajorLabels)
delete[] mMajorLabels;
if (mMinorLabels)
delete[] mMinorLabels;
if (mMinorMinorLabels)
delete[] mMinorMinorLabels;
} }
void Ruler::SetTwoTone(bool twoTone) void Ruler::SetTwoTone(bool twoTone)
@ -333,8 +319,6 @@ void Ruler::SetNumberScale(const NumberScale *pScale)
void Ruler::OfflimitsPixels(int start, int end) void Ruler::OfflimitsPixels(int start, int end)
{ {
int i;
if (!mUserBits) { if (!mUserBits) {
if (mOrientation == wxHORIZONTAL) if (mOrientation == wxHORIZONTAL)
mLength = mRight-mLeft; mLength = mRight-mLeft;
@ -342,24 +326,19 @@ void Ruler::OfflimitsPixels(int start, int end)
mLength = mBottom-mTop; mLength = mBottom-mTop;
if( mLength < 0 ) if( mLength < 0 )
return; return;
mUserBits = new int[mLength+1]; mUserBits.reinit(static_cast<size_t>(mLength+1), true);
for(i=0; i<=mLength; i++)
mUserBits[i] = 0;
mUserBitLen = mLength+1; mUserBitLen = mLength+1;
} }
if (end < start) { if (end < start)
i = end; std::swap( start, end );
end = start;
start = i;
}
if (start < 0) if (start < 0)
start = 0; start = 0;
if (end > mLength) if (end > mLength)
end = mLength; end = mLength;
for(i=start; i<=end; i++) for(int i = start; i <= end; i++)
mUserBits[i] = 1; mUserBits[i] = 1;
} }
@ -385,13 +364,9 @@ void Ruler::Invalidate()
else else
mLength = mBottom-mTop; mLength = mBottom-mTop;
if (mBits) { mBits.reset();
delete [] mBits;
mBits = NULL;
}
if (mUserBits && mLength+1 != mUserBitLen) { if (mUserBits && mLength+1 != mUserBitLen) {
delete[] mUserBits; mUserBits.reset();
mUserBits = NULL;
mUserBitLen = 0; mUserBitLen = 0;
} }
} }
@ -1053,27 +1028,20 @@ void Ruler::Update(const TimeTrack* timetrack)// Envelope *speedEnv, long minSpe
// We can just recompute them as we need them? Yes, but only if // We can just recompute them as we need them? Yes, but only if
// mCustom is false!!!! // mCustom is false!!!!
auto size = static_cast<size_t>(mLength + 1);
if(!mCustom) { if(!mCustom) {
mNumMajor = 0; mNumMajor = 0;
mNumMinor = 0; mNumMinor = 0;
mNumMinorMinor = 0; mNumMinorMinor = 0;
if (mLength!=mLengthOld) { if (mLength!=mLengthOld) {
if (mMajorLabels) mMajorLabels.reinit(size);
delete[] mMajorLabels; mMinorLabels.reinit(size);
mMajorLabels = new Label[mLength+1]; mMinorMinorLabels.reinit(size);
if (mMinorLabels)
delete[] mMinorLabels;
mMinorLabels = new Label[mLength+1];
if (mMinorMinorLabels)
delete[] mMinorMinorLabels;
mMinorMinorLabels = new Label[mLength+1];
mLengthOld = mLength; mLengthOld = mLength;
} }
} }
if (mBits) mBits.reinit(size);
delete[] mBits;
mBits = new int[mLength+1];
if (mUserBits) if (mUserBits)
for(i=0; i<=mLength; i++) for(i=0; i<=mLength; i++)
mBits[i] = mUserBits[i]; mBits[i] = mUserBits[i];
@ -1515,8 +1483,8 @@ int Ruler::FindZero(Label * label, const int len)
int Ruler::GetZeroPosition() int Ruler::GetZeroPosition()
{ {
int zero; int zero;
if((zero = FindZero(mMajorLabels, mNumMajor)) < 0) if((zero = FindZero(mMajorLabels.get(), mNumMajor)) < 0)
zero = FindZero(mMinorLabels, mNumMinor); zero = FindZero(mMinorLabels.get(), mNumMinor);
// PRL: don't consult minor minor?? // PRL: don't consult minor minor??
return zero; return zero;
} }
@ -1539,28 +1507,24 @@ void Ruler::GetMaxSize(wxCoord *width, wxCoord *height)
void Ruler::SetCustomMode(bool value) { mCustom = value; } void Ruler::SetCustomMode(bool value) { mCustom = value; }
void Ruler::SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step) void Ruler::SetCustomMajorLabels(wxArrayString *label, size_t numLabel, int start, int step)
{ {
int i;
mNumMajor = numLabel; mNumMajor = numLabel;
mMajorLabels = new Label[numLabel]; mMajorLabels.reinit(numLabel);
for(i=0; i<numLabel; i++) { for(size_t i = 0; i<numLabel; i++) {
mMajorLabels[i].text = label->Item(i); mMajorLabels[i].text = label->Item(i);
mMajorLabels[i].pos = start + i*step; mMajorLabels[i].pos = start + i*step;
} }
//Remember: DELETE majorlabels.... //Remember: DELETE majorlabels....
} }
void Ruler::SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step) void Ruler::SetCustomMinorLabels(wxArrayString *label, size_t numLabel, int start, int step)
{ {
int i;
mNumMinor = numLabel; mNumMinor = numLabel;
mMinorLabels = new Label[numLabel]; mMinorLabels.reinit(numLabel);
for(i=0; i<numLabel; i++) { for(size_t i = 0; i<numLabel; i++) {
mMinorLabels[i].text = label->Item(i); mMinorLabels[i].text = label->Item(i);
mMinorLabels[i].pos = start + i*step; mMinorLabels[i].pos = start + i*step;
} }

@ -129,8 +129,8 @@ class AUDACITY_DLL_API Ruler {
// If this is the case, you should provide a wxString array of labels, start // If this is the case, you should provide a wxString array of labels, start
// label position, and labels step. The range eventually specified will be // label position, and labels step. The range eventually specified will be
// ignored. // ignored.
void SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step); void SetCustomMajorLabels(wxArrayString *label, size_t numLabel, int start, int step);
void SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step); void SetCustomMinorLabels(wxArrayString *label, size_t numLabel, int start, int step);
void SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo); void SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo);
@ -191,8 +191,8 @@ private:
int mDigits; int mDigits;
int *mUserBits; ArrayOf<int> mUserBits;
int *mBits; ArrayOf<int> mBits;
int mUserBitLen; int mUserBitLen;
bool mValid; bool mValid;
@ -208,11 +208,11 @@ private:
}; };
int mNumMajor; int mNumMajor;
Label *mMajorLabels; ArrayOf<Label> mMajorLabels;
int mNumMinor; int mNumMinor;
Label *mMinorLabels; ArrayOf<Label> mMinorLabels;
int mNumMinorMinor; int mNumMinorMinor;
Label *mMinorMinorLabels; ArrayOf<Label> mMinorMinorLabels;
// Returns 'zero' label coordinate (for grid drawing) // Returns 'zero' label coordinate (for grid drawing)
int FindZero(Label * label, int len); int FindZero(Label * label, int len);