Seem there's either a critter in the wx2812 socket IPC code (the
socket processing was rewritten for the wx3 series) that could
cause Audacity to hang during startup if more than 1 file was
opened at the same time. It was hit or miss, but more hit than
miss and was likely to occur when opening multiple files in a
file manager.
This fix was to stop using the wx2 IPC code and craft our own
basic startup messaging.
The problem was that different temp directories can
be specified when using Portable Settings. This caused
the single instance checker to look for it's lock file
in different locations so it was unable to detect that
another instance was running.
This changes the directory for the lock file to be the
user's home directory (which is the default for the checker
anyway). This allow the user to still specify different
temp directories in the Portable Settings and ensure's
that only one instance (per user) ever runs.
It now checks the single instance before initializing
preferences since preferences are modified during initialization
which could interere with an already running instance.
In addition, the Mac now uses the DDE IPC startup to
ensure all files are opened by the single Audacity instance.
Normally this is not needed since we also support the OSX
mechanism for opening by an existing process. But, that
only works if the exact same Audacity.app is used. There
are instances when this is not always the case.
I also ran across a problem with language initialization.
Since preferences were initialized before the locale was set,
dialogs would be shown in English. I've made a change that sets
the language to the system language until the preferences are
loaded and then resets it to the user selected language.
The problem is that the fix for bug #334 is a bit over zealous and
blocks ALL application level events instead of just the keyboard events.
This was blocking the new AUDIOIO event from being handled.
I didn't want to monkey with the #334 solution at this time, so the
simple fix was to ensure the progress dialog was going (thus, enabling
appilcation events) was destroyed before attempting to stop the audio
stream.
Steps to reproduce:
1) Launch Audacity
2) File > New
3) Generate a sound in the new project
4) Open a LADSPA effect
5) In second project: File > Close, don't save changes.
6) In first project, generate a sound.
7) Click "Play" button - crash :-(
The error message only happens in debug builds, but the cause of
the message still happens in release builds. Basically, the temporary
project directory may not yet be created if the person is only monitoring.
The RealtimeProcessStart/Stop methods are used to process the
samples for the master effect (the one the user interacts with),
it should be bypassed as well if suspended.
The problem was that if the user chose to quit Audacity when
the auto recovery dialog was displayed, Audacity would crash
because the command line was still parsed and any filenames
listed on the command line would still be opened. But, that
would failed because "quit" processing had already been done.
Anyway, a simple one line fix.
When building for wx3 on Linux, the backported number validators
and formatter conflicts with the wx3 version because I never
renamed them. Crashes during termination would occur because
the wx3 version and our version had different vtables.
I was thinking that we would just be able to delete the
backported version when upgrading to wx3, but since
we've made Audacity specific changes to them we can't
simply start using the real wx3 versions anymore.
Therefore, I needed to rename then to prevent the crashes.
1) Removed tabs and cleaned up consistency
2) Added removeal of "win" and "mac" directories which don't do
Linux users any good
3) Added removal of "lv2" directory as a system install of lv2
and requisites will be used instead
4) Added removal of "libvamp" directory as a system install of libvamp
will be used instead
5) Added removeal of "libsoxr" directory as a system install of libsoxr
will be used instead
6) Removed deletion of portaudio-v19/test since it seems to be required
to build now
7) Removed Windows project file updating
8) Reordered the src directory copy so that it is done before any
changes are made. This way if the tarball creation fails, you still
have a pristine src directory.
This will remove that pesky Makefile.in that would get in
the way when trying to commit. It doesn't need to be in
SVN since it is regenerated each build.
And this will restore Makefile.in.in to the unmodified
version there was a risk of losing those changes when/if
autopoint was rerun.
The changes were moved to configure.ac.
Thanks to a discussion with Steve, I went back to the docs
and found that SetCursor() is persistent. So it doesn't
have to be done in a mouse event handler. The constructor
is perfectly sufficient.
1) Shell VSTs were completely unrecognized...that is no longer the case
2) All VSTs will now ALWAYS be initialized and cleaned up from the main
GUI thread. I found that some Waves VSTs would freeze Audacity when
initialized in the audio thread and closed in the GUI thread.
3) While realtime previewing, it was possible that the wrong slave
could be used to process new blocks of audio.
4) I found that the Waves AUs don't crash on a real Mac (instead of a
virtual machine), so I removed the "black list" I'd put in just for
them. (Something to do with needing full 3D support I think.)
Anyway, #2 and #3 were quite intrusive, so as much RTP testing as possible
would be a good thing.
This will fix the clipping indicator turning on after a toolbar reset
and, as a bonus, the timers now only run if playing, capturing, or
monitoring. Will (slightly) reduce the CPU consumption.