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.