This commit is contained in:
Paul Licameli 2016-02-18 12:57:40 -05:00
parent e3e10f1fc1
commit a8652c5e74
8 changed files with 130 additions and 142 deletions

View File

@ -597,25 +597,27 @@ AliasBlockFile::~AliasBlockFile()
bool AliasBlockFile::ReadSummary(void *data)
{
wxFFile summaryFile(mFileName.GetFullPath(), wxT("rb"));
wxLogNull *silence=0;
if(mSilentLog)silence= new wxLogNull();
if( !summaryFile.IsOpened() ){
{
Maybe<wxLogNull> silence{};
if (mSilentLog)
silence.create();
// NEW model; we need to return valid data
memset(data,0,(size_t)mSummaryInfo.totalSummaryBytes);
if(silence) delete silence;
if (!summaryFile.IsOpened()){
// we silence the logging for this operation in this object
// after first occurrence of error; it's already reported and
// spewing at the user will complicate the user's ability to
// deal
mSilentLog=TRUE;
return true;
// NEW model; we need to return valid data
memset(data, 0, (size_t)mSummaryInfo.totalSummaryBytes);
}else mSilentLog=FALSE; // worked properly, any future error is NEW
// we silence the logging for this operation in this object
// after first occurrence of error; it's already reported and
// spewing at the user will complicate the user's ability to
// deal
mSilentLog = TRUE;
return true;
if(silence) delete silence;
}
else mSilentLog = FALSE; // worked properly, any future error is NEW
}
int read = summaryFile.Read(data, (size_t)mSummaryInfo.totalSummaryBytes);

View File

@ -197,7 +197,6 @@ static int RecursivelyEnumerate(wxString dirPath,
return count;
}
static int RecursivelyEnumerateWithProgress(wxString dirPath,
wxArrayString& filePathArray, // output: all files in dirPath tree
wxString dirspec,
@ -205,19 +204,16 @@ static int RecursivelyEnumerateWithProgress(wxString dirPath,
int progress_count,
const wxChar* message)
{
ProgressDialog *progress = NULL;
Maybe<ProgressDialog> progress{};
if (message)
progress = new ProgressDialog(_("Progress"), message);
progress.create( _("Progress"), message );
int count = RecursivelyEnumerate(
dirPath, filePathArray, dirspec,
bFiles, bDirs,
progress_count, 0,
progress);
if (progress)
delete progress;
progress.get());
return count;
}
@ -291,10 +287,10 @@ static void RecursivelyRemove(wxArrayString& filePathArray, int count,
bool bFiles, bool bDirs,
const wxChar* message = NULL)
{
ProgressDialog *progress = NULL;
Maybe<ProgressDialog> progress{};
if (message)
progress = new ProgressDialog(_("Progress"), message);
progress.create( _("Progress"), message );
for (int i = 0; i < count; i++) {
const wxChar *file = filePathArray[i].c_str();
@ -305,9 +301,6 @@ static void RecursivelyRemove(wxArrayString& filePathArray, int count,
if (progress)
progress->Update(i, count);
}
if (progress)
delete progress;
}

View File

@ -69,26 +69,28 @@ void ComputeLegacySummaryInfo(wxFileName fileName,
SampleBuffer data(info->frames64K * fields,
info->format);
wxLogNull *silence=0;
wxFFile summaryFile(fileName.GetFullPath(), wxT("rb"));
int read;
if(Silent)silence= new wxLogNull();
{
Maybe<wxLogNull> silence{};
wxFFile summaryFile(fileName.GetFullPath(), wxT("rb"));
if (Silent)
silence.create();
if( !summaryFile.IsOpened() ) {
wxLogWarning(wxT("Unable to access summary file %s; substituting silence for remainder of session"),
fileName.GetFullPath().c_str());
if (!summaryFile.IsOpened()) {
wxLogWarning(wxT("Unable to access summary file %s; substituting silence for remainder of session"),
fileName.GetFullPath().c_str());
read=info->frames64K * info->bytesPerFrame;
memset(data.ptr(), 0, read);
}else{
summaryFile.Seek(info->offset64K);
read = summaryFile.Read(data.ptr(),
info->frames64K *
info->bytesPerFrame);
read = info->frames64K * info->bytesPerFrame;
memset(data.ptr(), 0, read);
}
else{
summaryFile.Seek(info->offset64K);
read = summaryFile.Read(data.ptr(),
info->frames64K *
info->bytesPerFrame);
}
}
if(silence) delete silence;
int count = read / info->bytesPerFrame;
CopySamples(data.ptr(), info->format,
@ -151,22 +153,23 @@ LegacyBlockFile::~LegacyBlockFile()
bool LegacyBlockFile::ReadSummary(void *data)
{
wxFFile summaryFile(mFileName.GetFullPath(), wxT("rb"));
wxLogNull *silence=0;
if(mSilentLog)silence= new wxLogNull();
int read;
{
Maybe<wxLogNull> silence{};
if (mSilentLog)
silence.create();
if( !summaryFile.IsOpened() ){
if (!summaryFile.IsOpened()){
memset(data,0,(size_t)mSummaryInfo.totalSummaryBytes);
memset(data, 0, (size_t)mSummaryInfo.totalSummaryBytes);
if(silence) delete silence;
mSilentLog=TRUE;
mSilentLog = TRUE;
return true;
return true;
}
read = summaryFile.Read(data, (size_t)mSummaryInfo.totalSummaryBytes);
}
int read = summaryFile.Read(data, (size_t)mSummaryInfo.totalSummaryBytes);
if(silence) delete silence;
mSilentLog=FALSE;
return (read == mSummaryInfo.totalSummaryBytes);
@ -215,19 +218,20 @@ int LegacyBlockFile::ReadData(samplePtr data, sampleFormat format,
sf = sf_open_fd(f.fd(), SFM_READ, &info, FALSE);
}
wxLogNull *silence=0;
if(mSilentLog)silence= new wxLogNull();
{
Maybe<wxLogNull> silence{};
if (mSilentLog)
silence.create();
if (!sf){
if (!sf){
memset(data,0,SAMPLE_SIZE(format)*len);
memset(data, 0, SAMPLE_SIZE(format)*len);
if(silence) delete silence;
mSilentLog=TRUE;
mSilentLog = TRUE;
return len;
return len;
}
}
if(silence) delete silence;
mSilentLog=FALSE;
sf_count_t seekstart = start +

View File

@ -80,37 +80,37 @@ int PCMAliasBlockFile::ReadData(samplePtr data, sampleFormat format,
return len;
}
wxLogNull *silence=0;
if(mSilentAliasLog)silence= new wxLogNull();
memset(&info, 0, sizeof(info));
wxFile f; // will be closed when it goes out of scope
SNDFILE *sf = NULL;
{
Maybe<wxLogNull> silence{};
if (mSilentAliasLog)
silence.create();
if (f.Exists(mAliasedFileName.GetFullPath())) { // Don't use Open if file does not exits
if (f.Open(mAliasedFileName.GetFullPath())) {
// Even though there is an sf_open() that takes a filename, use the one that
// takes a file descriptor since wxWidgets can open a file with a Unicode name and
// libsndfile can't (under Windows).
ODManager::LockLibSndFileMutex();
sf = sf_open_fd(f.fd(), SFM_READ, &info, FALSE);
ODManager::UnlockLibSndFileMutex();
memset(&info, 0, sizeof(info));
if (f.Exists(mAliasedFileName.GetFullPath())) { // Don't use Open if file does not exits
if (f.Open(mAliasedFileName.GetFullPath())) {
// Even though there is an sf_open() that takes a filename, use the one that
// takes a file descriptor since wxWidgets can open a file with a Unicode name and
// libsndfile can't (under Windows).
ODManager::LockLibSndFileMutex();
sf = sf_open_fd(f.fd(), SFM_READ, &info, FALSE);
ODManager::UnlockLibSndFileMutex();
}
}
if (!sf){
memset(data, 0, SAMPLE_SIZE(format)*len);
silence.reset();
mSilentAliasLog = TRUE;
// Set a marker to display an error message for the silence
if (!wxGetApp().ShouldShowMissingAliasedFileWarning())
wxGetApp().MarkAliasedFilesMissingWarning(this);
return len;
}
}
if (!sf){
memset(data,0,SAMPLE_SIZE(format)*len);
if(silence) delete silence;
mSilentAliasLog=TRUE;
// Set a marker to display an error message for the silence
if (!wxGetApp().ShouldShowMissingAliasedFileWarning())
wxGetApp().MarkAliasedFilesMissingWarning(this);
return len;
}
if(silence) delete silence;
mSilentAliasLog=FALSE;
ODManager::LockLibSndFileMutex();

View File

@ -345,21 +345,21 @@ bool SimpleBlockFile::ReadSummary(void *data)
wxFFile file(mFileName.GetFullPath(), wxT("rb"));
wxLogNull *silence=0;
if(mSilentLog)silence= new wxLogNull();
{
Maybe<wxLogNull> silence{};
if (mSilentLog)
silence.create();
if(!file.IsOpened() ){
if (!file.IsOpened()){
memset(data,0,(size_t)mSummaryInfo.totalSummaryBytes);
memset(data, 0, (size_t)mSummaryInfo.totalSummaryBytes);
if(silence) delete silence;
mSilentLog=TRUE;
mSilentLog = TRUE;
return true;
return true;
}
}
if(silence) delete silence;
mSilentLog=FALSE;
// The offset is just past the au header
@ -400,31 +400,31 @@ int SimpleBlockFile::ReadData(samplePtr data, sampleFormat format,
//wxLogDebug("SimpleBlockFile::ReadData(): Reading data from disk.");
SF_INFO info;
wxLogNull *silence=0;
if(mSilentLog)silence= new wxLogNull();
memset(&info, 0, sizeof(info));
wxFile f; // will be closed when it goes out of scope
SNDFILE *sf = NULL;
{
Maybe<wxLogNull> silence{};
if (mSilentLog)
silence.create();
if (f.Open(mFileName.GetFullPath())) {
// Even though there is an sf_open() that takes a filename, use the one that
// takes a file descriptor since wxWidgets can open a file with a Unicode name and
// libsndfile can't (under Windows).
sf = sf_open_fd(f.fd(), SFM_READ, &info, FALSE);
memset(&info, 0, sizeof(info));
if (f.Open(mFileName.GetFullPath())) {
// Even though there is an sf_open() that takes a filename, use the one that
// takes a file descriptor since wxWidgets can open a file with a Unicode name and
// libsndfile can't (under Windows).
sf = sf_open_fd(f.fd(), SFM_READ, &info, FALSE);
}
if (!sf) {
memset(data, 0, SAMPLE_SIZE(format)*len);
mSilentLog = TRUE;
return len;
}
}
if (!sf) {
memset(data,0,SAMPLE_SIZE(format)*len);
if(silence) delete silence;
mSilentLog=TRUE;
return len;
}
if(silence) delete silence;
mSilentLog=FALSE;
sf_seek(sf, start, SEEK_SET);

View File

@ -456,7 +456,7 @@ bool VSTEffectsModule::RegisterPlugin(PluginManagerInterface & pm, const wxStrin
wxString effectIDs = wxT("0;");
wxStringTokenizer effectTzr(effectIDs, wxT(";"));
wxProgressDialog *progress = NULL;
Maybe<wxProgressDialog> progress{};
size_t idCnt = 0;
size_t idNdx = 0;
@ -517,16 +517,16 @@ bool VSTEffectsModule::RegisterPlugin(PluginManagerInterface & pm, const wxStrin
idCnt = effectTzr.CountTokens();
if (idCnt > 3)
{
progress = new wxProgressDialog(_("Scanning Shell VST"),
wxString::Format(_("Registering %d of %d: %-64.64s"), 0, idCnt, proc.GetName().c_str()),
idCnt,
NULL,
wxPD_APP_MODAL |
wxPD_AUTO_HIDE |
wxPD_CAN_ABORT |
wxPD_ELAPSED_TIME |
wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME);
progress.create( _("Scanning Shell VST"),
wxString::Format(_("Registering %d of %d: %-64.64s"), 0, idCnt, proc.GetName().c_str()),
static_cast<int>(idCnt),
nullptr,
wxPD_APP_MODAL |
wxPD_AUTO_HIDE |
wxPD_CAN_ABORT |
wxPD_ELAPSED_TIME |
wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME );
progress->Show();
}
break;
@ -611,11 +611,6 @@ bool VSTEffectsModule::RegisterPlugin(PluginManagerInterface & pm, const wxStrin
}
}
if (progress)
{
delete progress;
}
return valid;
}

View File

@ -213,7 +213,7 @@ int MP3ImportFileHandle::Import(TrackFactory *trackFactory, Track ***outTracks,
mPrivateData.file = mFile;
mPrivateData.inputBuffer = new unsigned char [INPUT_BUFFER_SIZE];
mPrivateData.progress = mProgress;
mPrivateData.progress = mProgress.get();
mPrivateData.channels = NULL;
mPrivateData.updateResult= eProgressSuccess;
mPrivateData.id3checked = false;

View File

@ -119,17 +119,12 @@ class ImportFileHandle /* not final */
public:
ImportFileHandle(const wxString & filename)
: mFilename(filename),
mProgress(NULL)
mProgress{}
{
}
virtual ~ImportFileHandle()
{
if (mProgress != NULL)
{
delete mProgress;
mProgress = NULL;
}
}
// The importer should call this to create the progress dialog and
@ -140,8 +135,7 @@ public:
wxString title;
title.Printf(_("Importing %s"), GetFileDescription().c_str());
mProgress = new ProgressDialog(title,
f.GetFullName());
mProgress.create(title, f.GetFullName());
}
// This is similar to GetImporterDescription, but if possible the
@ -170,7 +164,7 @@ public:
protected:
wxString mFilename;
ProgressDialog *mProgress;
Maybe<ProgressDialog> mProgress;
};