As the comment in `WaitForCompletion` explains, it does a SpinEventLoopUntil
as part of CStream callbacks, and the CStream can be unregistered during that,
which is fine, but we need to hold a strong reference first since we use
the object afterward. The reference in `WaitForCompletion` is technically
redundant but makes future uses safer and admits a comment that future clients
may actually heed.
This also adds an unrelated missing null check while we're here.
The read-loop in OnDataAvailable was needlessly baroque and used a very
strange dialect of Hungarian notation. Factored out the zero-element
case for simplicity, and added justification in comments as-appropriate.
- Remove numerous blocklist entries that no longer apply.
- Remove CanComputeVirtualKeyCodeFromScanCode(), because it's always true.
- Remove ShowXP{Folder,File}Picker(), since we have native pickers on supported Windows versions.
- Remove the config.trim_on_minimize preference, which is pointless on NT6+ and will just cause problems if used.
Tag #22.