... The 100ms sleep added at at a675b5907f was
meant to let NS framework events arrive on another thread and be detected by
wxWidgets. But there are still reports that it is not reliable enough.
This other fix may be sufficient alone, making the sleep unnecessary. But it
is harmless so we will leave it there.
... The reported continuing failure to fix bug 2437 -- sometimes -- appears to
have been a timing problem. I could observe it often with release builds but
not with debug.
It now uses VACUUM INTO instead of the SQLite backup API
in hopes that the copies will be smaller. And VACUUM INTO
is "supposed" to be faster, but time will tell. It's easy
to put the backup API usage back in.
This also fixes a bit I missed with redoing the orphan block
handling that was reported by Paul.
And finally, it renames the AutoRecovery.cpp/.h files and AutoSaveFile
class to ProjectSerializer since the AutoSaveFile class is being
used for regular project documents now and it doesn't write to a
file anymore.
If anyone has a better idea for a name other than ProjectSerializer
feel free to change it. I hate naming things.
* ProjectFileIO::SaveProject() won't close original db until done...
... So on the failure path, don't risk closing the original too early, failing
with the new database, and then failing to reopen the original.
Just keep the original open and a new connection open too, until it is
certain that the initial population of the new database is successful.
* Check return value from AutoSaveDelete when saving-as
* Fix the remaining unchecked sqlite3_bind* calls, which are in Autosave...
...similarly to checks in 8b3f9fa
* When saving-as or -copy, open the new database only once
* Check return value from sqlite_initialize
- SQLite added to libs in readme.txt
- User message 'aup not associated' updated to 'aup3'
- Typos strind -> string, in -> is
- No translation of debug message
!!! THERE WILL NO DOUBT BE BUGS !!!
This is a big one and there's still several things to
complete. Just want to get this in the wild to start
receiving feedback.
One big thing right now is that it will NOT load pre-aup3
files. An importer is on the way for that.
This removes all of the OnDemand code embedded throughout
the main codebase. Individual files related specifically
to OD have been left in place, but removed from the build.
... in four cases; not in some other .cpp file.
This is another move that causes the generated graph to reflect dependencies
correctly.
This fixes other large, hidden cycles that involved PrefsDialog.cpp: there was
link dependency on that when PrefsPanel.h was used for the base class. No
longer.
Also cycles involving TrackPanel.cpp, which contained the default
implementations for TrackPanelCell and related abstract base classes.
... Reimplemented without making dependency cycles.
Project and ProjectFileManager publish events for change of active project or
change of a project title.
WindowMenus.cpp can listen for those events, so that it can update the menu
appropriately. So it's all done nonintrusively in the rest of the code.
These changes were made too close to release and are considered too dangerous for 2.4.0.
We will use the changes Leland provided. We can review these proposed changes by Paul after 2.4.0 is released.
Change string or sub-string "TimeToolBar" to "Time" to conform with the naming convention of other toolbars.
(Change prompted by the narrator screen reader unexpectedly reading TimeToolBar rather than Time when tabbing to the toolbar.)
This simplifies the active/aborted Audacity detection for Mac and Linux by
getting rid of the lockfile entirely. Instead it utilizes the socket file
that was already being used for communication.
More comments in source...
Problem:
If a new version of Audacity introduces a new default shortcut, or changes an existing one, then this may be the same shortcut as a user has previously assigned to another command. Both commands will have the same shortcut, and the shortcut will only execute one of those commands.
Fix:
Check for any such duplicates when a user opens a version of audacity using an audacity.cfg file which was created with a different version.
For each duplicate found, remove the shortcut from the command which has a new or changed default.
If duplicates where found, open a message box informing the user of the removed shortcuts.
... such as Nyquist Workbench.
I don't fully understand why, but destroying the menu registry items very late,
during the destruction of static objects, causes a crash in memory deallocation,
at least on Mac.
So destroy the menu registry explicitly in application shut-down.
But, this time use a "C" wrapper as posited by Paul in:
https://bugzilla.audacityteam.org/show_bug.cgi?id=543#c6
Doing so should bypass the execve()/decontruction issue and
still allow entitlements to work.
This also sets the build system to Legacy so that a "clean"
action will not produce:
error: Could not delete '...' because it was not created by
the build system.
And, I'm not sure why the deployment target was 10.9, but it
should have been 10.7.