This captures crashes on Windows along with the stack backtrace.
On Linux (fedora 21 at least), the necessary function to enable
capture is not included in the system wx libs. But, a self built
version works fine and capture the backtrace, so I'm assuming
other distros will probably work as well.
On OSX, the crashes are caught, but it does not include the
backtrace.
But, really, the backtraces aren't all that useful in a release
build since we don't ship with debug symbols and optimization
plays havoc with proper backtraces anyway.
The real benefit will be for the support folks as they can now
get consistent info from user by asking the to generate a report
from the "Help->Generate Support Data" menu item.
This changes the autosave XML file to a binary representation
during writing to speed up autosave processing. A lot of the
time used during autosave is a result of having to convert and
print all of the values to the XML file.
Writing the same information, but in binary format, reduces
all of that to just the bare essentials and the actual write
I/O.
During recovery, the binary file is read and converted to
the real xML representation and processing happens as it
did before.
It is a noticeable difference with very long or many tracks.
The included fix has to do with append recording.
Say you have 3 tracks and you want to append recorded audio
to the middle track. Sometime later Audacity crashes and
upon recovery, the recorded audio is actually appended to
the third track, not the second one.
This fixes that by adding an "autosaveid" to each track as
it is written to the autosave file. The same ID is written
to the recording recovery appends to the autosave file.
Then, during recovery, the IDs are matched up and the audio
gets appended to the proper track.
These autosaveid attributes are only present in the autosave
file and not in saved project files.
During an append record, silence may need to be added to the
end of the existing track(s) to fill any gap between the end
and the common recording start time.
But, if the recording fails to start, this silence is left at
the ends of the tracks.
This change fixes that by making a copy of the tracks before
recording starts and restoring the tracks from that copy if
the start fails.
During an append record, silence may need to be added to the
end of the existing track(s) to fill any gap between the end
and the common recording start time.
But, if the recording fails to start, this silence is left at
the ends of the tracks.
This change fixes that by making a copy of the tracks before
recording starts and restoring the tracks from that copy if
the start fails.
EXPERIMENTAL_SCRUBBING_BASIC enables middle-click-drag to scrub, or to seek
when shift is down.
EXPERIMENTAL_SCRUBBING_SMOOTH_SCROLL adds middle-double-click-drag to
scrub or (with SHIFT down) to seek while keeping the playhead at the midline
of the track display.
EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL allows control wheel to vary the speed
limit, while scrubbing (not seeking).
All three are enabled in this commit.
Also notice the changes to status bar messages and the Mouse Preferences dialog.
Scrubbing works only in Select and Multi tools.
EXPERIMENTAL_SCRUBBING_BASIC enables middle-click-drag to scrub, or to seek
when shift is down.
EXPERIMENTAL_SCRUBBING_SMOOTH_SCROLL adds middle-double-click-drag to
scrub or (with SHIFT down) to seek while keeping the playhead at the midline
of the track display.
EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL allows control wheel to vary the speed
limit, while scrubbing (not seeking).
All three are enabled in this commit.
Also notice the changes to status bar messages and the Mouse Preferences dialog.
Scrubbing works only in Select and Multi tools.
This will matter if the smooth-scrolling version of scrubbing is enabled
The problem was accumulation of roundoff errors when deciding which pixel
column data to copy from old caches to new caches, when the number of samples
scrolled was not an integer multiple of samples per pixel (itself, not always
an integer)
Thus repeated scrolling by small amounts caused the wave display or spectrogram
to creep relative to the time ruler!
This will matter if the smooth-scrolling version of scrubbing is enabled
The problem was accumulation of roundoff errors when deciding which pixel
column data to copy from old caches to new caches, when the number of samples
scrolled was not an integer multiple of samples per pixel (itself, not always
an integer)
Thus repeated scrolling by small amounts caused the wave display or spectrogram
to creep relative to the time ruler!
In particular, use an options structure for AudioIO::StartStream to simplify
calls
ControlToolBar::PlayPlayRegion also takes that structure as an argument, and a
SelectedRegion instead of two times
And other changes
This brings the builtin, LV2, and VAMP effects inline with the
Audio Units, LADSPA, and VST effects. All effects now share
a common UI.
This gives all effects (though not implemented for all):
User and factory preset capability
Preset import/export capability
Shared or private configuration options
Builtin effects can now be migrated to RTP, depending on algorithm.
LV2 effects now support graphical interfaces if the plugin supplies one.
Nyquist prompt enhanced to provide some features of the Nyquist Workbench.
It may not look like it, but this was a LOT of work, so trust me, there
WILL be problems and everything effect related should be suspect. Keep
a sharp eye (or two) open.