Gale found that the previous fix for bug #857 didn't
completely address all crashes.
In this case, the sequence of events:
1) Dynamic module is added to list of module using its name, "VST Effects"
2) Language is set (during init) to one that has "VST Effects" translated
3) Language is changed to something else via preferences, which changes
translation of "VST Effects" to something else.
4) During termination, the module is deleted, but since the language
has now changed due to translation, it isn't deleted from the list
of modules
5) An attempt is made to delete the next module, which happens to be
the same one becuase it was never removed from the list.
6) Boom...
Even though this is only a P2, I felt it would be
quite bothersome for the users and might cause some
confusion.
The problem was the the wxLocale was being deleted
before all usage of it was complete. The fix was
to explicitly delete the plugin and module managers.
Fix, which is to disable that aspect, was agreed between Paul, Bill, Steve (and OI agree too) and as a TL I'm putting it into action so as not to hold up release with a P1.
This puts the single instance checker back to pre-13868
behavior, so we're back to being able to open multiple
instance if the temp directory is different in portable
settings.
The access violation has apparently been happening for
quite a while, just hidden because it happened when
additional Audacity instances were executed and the DDE
command was sent to the first instance. After sending
the command, the connection was disconnected, but the
object had already been deleted by the command execution
so a first-chance exception was triggered.
If latency was introduced by an effect, the input position could
get offset by the amount of latency, such that the same input
would be processed twice for the number of sample of latency.
There was an issue in AUs where a "latency done" flags wasn't
being reset and so the second and subsequent uses of an effect
could not latency correct.
And in research that, I found that you need to set the sample rate
on all 3 scopes (global, input, and output) instead of just the
global scope.
Command line parsing has been revised and used
for the primary Audacity command line as well as
any secondary Audacity executions.
This way if multiple filenames are included on
the secondary executions, then we now pass ALL
of the filenames instead of just the first one.
Some hosts (like Ardour) use the "user" field and some use
the resvd2 field. In 2.0.6 I'd switced from resvd2 to user.
This fix puts it back to resv2 since at least one plugin,
Audiocation Phase, uses the "user" field for its own purposes
and rightly so.