Skip to content

SQLBI Whiteboard 1.0.2 (dev 3261)

Pre-release
Pre-release

Choose a tag to compare

@marcosqlbi marcosqlbi released this 25 Aug 10:37
ff5bfba
Keep Graphics Capture on the UI thread and bump to 1.0.2 (#70)

1.0.1 still crashed in the Store with `AccessViolationException` from
`IObjectReference.Finalize` (`0xC0000005`). Disposing the session and
frame fields was not enough.

Two RCWs were still left for the GC, and both match
create-LiveView-then-resize:

- `GraphicsCapturePicker` is not `IDisposable`. The pick method
allocated it and dropped it. Resize allocates, GC runs, the finalizer
`Marshal.Release`s off the UI apartment.
- `CreateFreeThreaded` built frames on a worker. Rate-limiting disposed
most of those wrappers on that worker. In a packaged process they are
apartment-bound.

Create a WinRT `DispatcherQueue` on the WPF UI thread and hold the
native controller for the process lifetime. Switch the frame pool to
`Create` so `FrameArrived` stays on that thread. `Release` every capture
RCW there, including the picker.

`VersionPrefix` is 1.0.2 so this can go to the Store (identity
`1.0.2.0`).

Verified locally: `dotnet build Whiteboard.sln -c Release` is clean,
Core smoke tests pass. Confirmation is still a packaged install on a
machine that crashed on 1.0.1; the portable ZIP never hit this path.