1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-21 23:00:06 +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

View File

@ -124,7 +124,7 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
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++) {
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];
}
mDecoder->mChannels[chn]->Append((samplePtr)tmp,
mDecoder->mChannels[chn]->Append((samplePtr)tmp.get(),
int16Sample,
frame->header.blocksize);
}
@ -142,8 +142,6 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
frame->header.blocksize);
}
}
delete [] tmp;
*/
mDecoder->mSamplesDone += frame->header.blocksize;

View File

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

View File

@ -113,17 +113,15 @@ wxString MeterUpdateMsg::toStringIfClipped()
// without needing mutexes.
//
MeterUpdateQueue::MeterUpdateQueue(int maxLen):
MeterUpdateQueue::MeterUpdateQueue(size_t maxLen):
mBufferSize(maxLen)
{
mBuffer = new MeterUpdateMsg[mBufferSize];
Clear();
}
// destructor
MeterUpdateQueue::~MeterUpdateQueue()
{
delete[] mBuffer;
}
void MeterUpdateQueue::Clear()
@ -1857,27 +1855,23 @@ void Meter::OnAudioIOStatus(wxCommandEvent &evt)
// 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
// 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];
state[0] = mMonitoring;
state[1] = mActive;
return state;
return { true, mMonitoring, mActive };
}
void Meter::RestoreState(void *state)
void Meter::RestoreState(const State &state)
{
bool *s = (bool *)state;
mMonitoring = s[0];
mActive = s[1];
if (!state.mSaved)
return;
mMonitoring = state.mMonitoring;
mActive = state.mActive;
if (mActive)
{
mTimer.Start(1000 / mMeterRefreshRate);
}
delete [] s;
}
//

View File

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

View File

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

View File

@ -144,13 +144,8 @@ Ruler::Ruler()
mUserFonts = false;
mMajorLabels = 0;
mMinorLabels = 0;
mMinorMinorLabels = 0;
mLengthOld = 0;
mLength = 0;
mBits = NULL;
mUserBits = NULL;
mUserBitLen = 0;
mValid = false;
@ -170,15 +165,6 @@ Ruler::Ruler()
Ruler::~Ruler()
{
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)
@ -333,8 +319,6 @@ void Ruler::SetNumberScale(const NumberScale *pScale)
void Ruler::OfflimitsPixels(int start, int end)
{
int i;
if (!mUserBits) {
if (mOrientation == wxHORIZONTAL)
mLength = mRight-mLeft;
@ -342,24 +326,19 @@ void Ruler::OfflimitsPixels(int start, int end)
mLength = mBottom-mTop;
if( mLength < 0 )
return;
mUserBits = new int[mLength+1];
for(i=0; i<=mLength; i++)
mUserBits[i] = 0;
mUserBits.reinit(static_cast<size_t>(mLength+1), true);
mUserBitLen = mLength+1;
}
if (end < start) {
i = end;
end = start;
start = i;
}
if (end < start)
std::swap( start, end );
if (start < 0)
start = 0;
if (end > mLength)
end = mLength;
for(i=start; i<=end; i++)
for(int i = start; i <= end; i++)
mUserBits[i] = 1;
}
@ -385,13 +364,9 @@ void Ruler::Invalidate()
else
mLength = mBottom-mTop;
if (mBits) {
delete [] mBits;
mBits = NULL;
}
mBits.reset();
if (mUserBits && mLength+1 != mUserBitLen) {
delete[] mUserBits;
mUserBits = NULL;
mUserBits.reset();
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
// mCustom is false!!!!
auto size = static_cast<size_t>(mLength + 1);
if(!mCustom) {
mNumMajor = 0;
mNumMinor = 0;
mNumMinorMinor = 0;
if (mLength!=mLengthOld) {
if (mMajorLabels)
delete[] mMajorLabels;
mMajorLabels = new Label[mLength+1];
if (mMinorLabels)
delete[] mMinorLabels;
mMinorLabels = new Label[mLength+1];
if (mMinorMinorLabels)
delete[] mMinorMinorLabels;
mMinorMinorLabels = new Label[mLength+1];
mMajorLabels.reinit(size);
mMinorLabels.reinit(size);
mMinorMinorLabels.reinit(size);
mLengthOld = mLength;
}
}
if (mBits)
delete[] mBits;
mBits = new int[mLength+1];
mBits.reinit(size);
if (mUserBits)
for(i=0; i<=mLength; i++)
mBits[i] = mUserBits[i];
@ -1515,8 +1483,8 @@ int Ruler::FindZero(Label * label, const int len)
int Ruler::GetZeroPosition()
{
int zero;
if((zero = FindZero(mMajorLabels, mNumMajor)) < 0)
zero = FindZero(mMinorLabels, mNumMinor);
if((zero = FindZero(mMajorLabels.get(), mNumMajor)) < 0)
zero = FindZero(mMinorLabels.get(), mNumMinor);
// PRL: don't consult minor minor??
return zero;
}
@ -1539,28 +1507,24 @@ void Ruler::GetMaxSize(wxCoord *width, wxCoord *height)
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;
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].pos = start + i*step;
}
//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;
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].pos = start + i*step;
}

View File

@ -129,8 +129,8 @@ class AUDACITY_DLL_API Ruler {
// 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
// ignored.
void SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step);
void SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step);
void SetCustomMajorLabels(wxArrayString *label, size_t numLabel, int start, int step);
void SetCustomMinorLabels(wxArrayString *label, size_t numLabel, int start, int step);
void SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo);
@ -191,8 +191,8 @@ private:
int mDigits;
int *mUserBits;
int *mBits;
ArrayOf<int> mUserBits;
ArrayOf<int> mBits;
int mUserBitLen;
bool mValid;
@ -208,11 +208,11 @@ private:
};
int mNumMajor;
Label *mMajorLabels;
ArrayOf<Label> mMajorLabels;
int mNumMinor;
Label *mMinorLabels;
ArrayOf<Label> mMinorLabels;
int mNumMinorMinor;
Label *mMinorMinorLabels;
ArrayOf<Label> mMinorMinorLabels;
// Returns 'zero' label coordinate (for grid drawing)
int FindZero(Label * label, int len);