Screen backdrop (schema v5/v6) + five-scene catalog + webcam polish: live desktop/game capture as a permanent non-deletable bottom layer (Source.IsBackdrop), auto full-screen game detection (Win32FullScreenDetector) else primary display, GraphicsCapturePicker re-designation, refcounted shared ScreenCaptureManager, Live-only backdrop by policy (HasBackdrop + v5-v6 backfill + EnforceBackdropPolicy, checkbox gone), SceneCatalog (Starting/Live/BRB/Chat/Ending) with + button re-adding missing scenes, webcam mid-session transparent-container fix (GetPreviewBitmap propagation), Chat half-screen-area cap, 'Add Webcam' always opens the picker (SwapWebcamIdentityAsync, no silent resurrect), WindowsRuntimeMarshal frame-read + 5s-throttled errors, docs updated, tests (65 passing)

This commit is contained in:
2026-08-07 14:15:50 -07:00
parent e037ba027b
commit ad9b3e1e48
27 changed files with 2232 additions and 116 deletions
+12
View File
@@ -150,6 +150,18 @@ public sealed class CameraManager : IDisposable
return _sessions.TryGetValue(deviceId, out var session) ? session.LatestFrame : null;
}
/// <summary>
/// The shared WriteableBitmap for a running session, or null when the camera
/// hasn't produced its first frame yet. <see cref="PreviewBitmapChanged"/> only
/// fires once (first frame), so configs created after the session started must
/// pick the bitmap up from here.
/// </summary>
public WriteableBitmap? GetPreviewBitmap(string deviceId)
{
lock (_gate)
return _sessions.TryGetValue(deviceId, out var session) ? session.PreviewBitmap : null;
}
public void Dispose()
{
List<CameraSession> sessions;