This possible fix is based on the idea that YieldFor is flaky, and is holding up events that we SHOULD process.
Therefore we process ALL events, not just some, and we do two yields, in case we are getting behind on the queue.
... Specify an array of arrays of strings. Don't pack it all as a single
string that is parsed. This makes the setup clearer.
It also avoids some concatenations of localized strings (which I want to
make uncompilable some day), and also removes the need for translators to
count the \n's and replicate precisely.
* Disk space warning if the recording potentially will not fit in disk space available.
* ProgressDialog enhancements that allow the Stop/Cancel button to be confirmed and the elapsed time to be hidden.
* Messages enhanced to clearly show the actions being taken.
Basically, just restored a bit of code to the ProgressDialog
that I'd removed during the conversion now that it's understood
what is actually happening.
This also re-enables the splash screen and recombines the
OnInit() and FinishInits() since I'm pretty sure the progress
dialog was the issue.
I also retested (as much as I could) and cleaned out all of the
little "hacks" the progress dialog gained over the years. With
the new modal handling of wx3, it seems that things are much better
behaved.
However, it seems that wxGTK (at least) has gained some new focus
probs (to be dealt with later).
Discovered a sizing problem when working on the effect registration
dialog and then found that others had mentioned a similar sizing
issue with the TimerRecordingDialog.
When the dialog yielded, it opened up a window that allowed events
to flow to other parts of the app that shouldn't be receiving them
while the action is in progress. This could cause odd behavior
or crashes.
I've removed the yields and hopefully the darn thing will still
work right.
I've made it where you can enable and disable via experimentals:
EXPERIMENTAL_REALTIME_EFFECTS
EXPERIMENTAL_EFFECTS_RACK
You will notice that, as of now, the only effects currently set up for
realtime are VSTs. Now that this is in, I will start converting the
rest.
As I start to convert the effects, the astute of you may notice that
they no longer directly access tracks or any "internal" Audacity
objects. This isolates the effects from changes in Audacity and makes
it much easier to add new ones.
Anyway, all 3 platforms can now display VST effects in graphical mode.
Yes, that means Linux too. There are quite a few VSTs for Linux if
you search for them.
The so-called "rack" definitely needs some discussion, work, and attention
from someone much better at graphics than me. I'm not really sure it should
stay in as-is. I'd originally planned for it to be simply a utility window
where you can store your (preconfigured) favorite effects. It should probably
revert back to that idea.
You may notice that this DOES include the API work I did. The realtime effects
were too tied to it and I didn't want to redo the whole thing. As I mentioned
elsewhere, the API stuff may or may not be very future proof.
So, let the critter complaints commence. I absolute KNOW there will be some.
(I know I'll be hearing from the Linux peeps pretty darn quickly. ;-))