mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-04 17:49:45 +02:00
Fix for bug 558
This commit is contained in:
parent
133b97feb6
commit
2cb32c763f
@ -2014,10 +2014,10 @@ bool Effect::TrackProgress(int whichTrack, double frac, wxString msg)
|
||||
return (updateResult != eProgressSuccess);
|
||||
}
|
||||
|
||||
bool Effect::TrackGroupProgress(int whichGroup, double frac)
|
||||
bool Effect::TrackGroupProgress(int whichGroup, double frac, wxString msg)
|
||||
{
|
||||
int updateResult = (mProgress ?
|
||||
mProgress->Update(whichGroup + frac, (double) mNumGroups) :
|
||||
mProgress->Update(whichGroup + frac, (double) mNumGroups, msg) :
|
||||
eProgressSuccess);
|
||||
return (updateResult != eProgressSuccess);
|
||||
}
|
||||
|
@ -313,7 +313,7 @@ protected:
|
||||
|
||||
// Pass a fraction between 0.0 and 1.0, for the current track group
|
||||
// (when doing stereo groups at a time)
|
||||
bool TrackGroupProgress(int whichGroup, double frac);
|
||||
bool TrackGroupProgress(int whichGroup, double frac, wxString = wxT(""));
|
||||
|
||||
int GetNumWaveTracks() { return mNumTracks; }
|
||||
|
||||
|
@ -423,6 +423,18 @@ bool NyquistEffect::Process()
|
||||
|
||||
mTrackIndex = 0;
|
||||
|
||||
mNumSelectedChannels = 0;
|
||||
SelectedTrackListOfKindIterator sel(Track::Wave, mOutputTracks);
|
||||
for (WaveTrack *t = (WaveTrack *) sel.First(); t; t = (WaveTrack *) sel.Next()) {
|
||||
mNumSelectedChannels++;
|
||||
if (mT1 >= mT0) {
|
||||
if (t->GetLinked()) {
|
||||
mNumSelectedChannels++;
|
||||
sel.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mDebugOutput.Clear();
|
||||
|
||||
if (mVersion >= 4)
|
||||
@ -522,24 +534,14 @@ bool NyquistEffect::Process()
|
||||
mProps += wxString::Format(wxT("(putprop '*PROJECT* (float %s) 'PREVIEW-DURATION)\n"),
|
||||
Internat::ToString(previewLen).c_str());
|
||||
|
||||
SelectedTrackListOfKindIterator sel(Track::Wave, mOutputTracks);
|
||||
int numChannels = 0;
|
||||
for (WaveTrack *t = (WaveTrack *) sel.First(); t; t = (WaveTrack *) sel.Next()) {
|
||||
numChannels++;
|
||||
if (mT1 >= mT0) {
|
||||
if (t->GetLinked()) {
|
||||
numChannels++;
|
||||
sel.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mProps += wxString::Format(wxT("(putprop '*SELECTION* (float %s) 'START)\n"),
|
||||
Internat::ToString(mT0).c_str());
|
||||
mProps += wxString::Format(wxT("(putprop '*SELECTION* (float %s) 'END)\n"),
|
||||
Internat::ToString(mT1).c_str());
|
||||
mProps += wxString::Format(wxT("(putprop '*SELECTION* (list %s) 'TRACKS)\n"), waveTrackList.c_str());
|
||||
mProps += wxString::Format(wxT("(putprop '*SELECTION* %d 'CHANNELS)\n"), numChannels);
|
||||
mProps += wxString::Format(wxT("(putprop '*SELECTION* %d 'CHANNELS)\n"), mNumSelectedChannels);
|
||||
}
|
||||
|
||||
// Keep track of whether the current track is first selected in its sync-lock group
|
||||
@ -967,6 +969,19 @@ bool NyquistEffect::ProcessOne()
|
||||
|
||||
rval = nyx_eval_expression(cmd.mb_str(wxConvUTF8));
|
||||
|
||||
// Audacity has no idea how long Nyquist processing will take, but
|
||||
// can monitor audio being returned.
|
||||
// Anything other than audio should be returmed almost instantly
|
||||
// so notify the user that process has completed (bug 558)
|
||||
if ((rval != nyx_audio) && ((mCount + mCurNumChannels) == mNumSelectedChannels)) {
|
||||
if (mCurNumChannels == 1) {
|
||||
TrackProgress(mCount, 1.0, _("Processing complete."));
|
||||
}
|
||||
else {
|
||||
TrackGroupProgress(mCount, 1.0, _("Processing complete."));
|
||||
}
|
||||
}
|
||||
|
||||
if (!rval) {
|
||||
wxLogWarning(wxT("Nyquist returned NIL"));
|
||||
return true;
|
||||
|
@ -209,6 +209,7 @@ private:
|
||||
bool mFirstInGroup;
|
||||
double mOutputTime;
|
||||
int mCount;
|
||||
int mNumSelectedChannels;
|
||||
double mProgressIn;
|
||||
double mProgressOut;
|
||||
double mProgressTot;
|
||||
|
@ -1233,8 +1233,8 @@ ProgressDialog::Update(int value, const wxString & message)
|
||||
mLastValue = value;
|
||||
}
|
||||
|
||||
// Only update if a full second has passed.
|
||||
if (now - mLastUpdate > 1000)
|
||||
// Only update if a full second has passed.or track progress is complete
|
||||
if ((now - mLastUpdate > 1000) || (value == 1000))
|
||||
{
|
||||
wxTimeSpan tsElapsed(0, 0, 0, elapsed);
|
||||
wxTimeSpan tsRemains(0, 0, 0, remains);
|
||||
|
Loading…
x
Reference in New Issue
Block a user