... The 100ms sleep added at at a675b5907f5fa7bba2537c249a84f73cabe5937c 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.
... but this may be a necessary piece of any fix that might be found.
See also recent commit c67842f525095f100aa662ff59be421545d8bfc4.
wxDF_UNICODETEXT replacing wxDF_TEXT was a necessary but not sufficient step to
fix a cut-copy-paste problem on Mac, and I suspect the same will be true here.
See also commits bbd369df1b3c5860ac1145f221c93972c9bac349 and
9036c001521883300c30c8e2d7ef6775dc00f918 for the commits that introduced this
code.
The partial fix they accomplished in 2.1.3 is no longer working, whether because
of wxWidgets changes, or macOS changes, or both.
... Doing the widening as needed to match Quality preference.
Fewer direct dependencies on QualityPrefs.h.
FLAC and OGG may import as float where before it was 24 bits; only 16 bits or
float. This makes them behave consistently with Raw and PCM.
... Problem was that before abandoning the connection to the original path,
compaction was done only sometimes, according to the criterion of estimated
%20 space savings at least. But this could cause the project to reopen with
orphan blocks in it, which were detected and reported as an improper save.
The easy solution is to force compaction always in this case.
Direct save does not have this problem because what would otherwise be orphaned
blocks are directly deleted from the database when undo states are destroyed
and sample blocks become unreferenced. So compacting only sometimes does not
cause orphan blocks on reopening.
Uncompacted projects use up 50% or so more space than they could.
The 'compact' feature as currently implemented is confusing, and does
not merit inclusion given the lowish saving. So featured disabled/removed.
... and probably less contention with the checkpoint thread during recording,
and probably less total drop-out time when stress-testing recording with high
sample rates or slow external devices or both.
And another transaction scope for the post-processing of dropouts may reduce the
total time spent there.
... The post-processing of an excessive number of small, touching intervals
was one cause of apparent hangs when stopping recording to a slow external
device and using a high recording sample rate, in my own trials.