docs: restructure TASKS.md into a catalog — one file per task in TASKS/
TASKS.md is now the index (status table, open items, research pointer). 33 files: 32 task files + 1 research facts file. The full take-saga narrative and all design decisions are preserved verbatim; the catalog makes the queue readable without opening every task body. Schema and AGENTS.md updated to reflect the new layout.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# TASK 16 — Kill infinity display (no-game backdrop fallback)
|
||||
|
||||
> Catalog: [`TASKS.md`](../TASKS.md) — status and requirements live here.
|
||||
|
||||
|
||||
**Goal:** when no full-screen game is detected, show a static branded placeholder instead of
|
||||
capturing the primary display (which causes the infinity mirror effect).
|
||||
|
||||
### Status: ✅ Shipped
|
||||
|
||||
**Changes:**
|
||||
1. `ResolveAutoCaptureKey()` returns `null` when no full-screen game is detected (was: primary monitor)
|
||||
2. `ReacquireScreenCaptures()` — clears stale `CaptureKey` when `auto == null` (handles DB upgrades);
|
||||
skips `AcquireAsync` when no keys are set
|
||||
3. `SeedLiveBackdropAsset()` — sets `AssetId` on the backdrop element itself (NOT a Background source);
|
||||
called from `ReacquireScreenCaptures()` after `EnsureBackdrop()` guarantees the element exists
|
||||
4. `Source.DisplaySource` falls back to `_imageSource` when `VideoImageSource` is null for live captures
|
||||
5. `Assets/live-backdrop.jpg` — user-provided image, added as `<Resource>` in csproj
|
||||
6. `ResolveOutputFrame()` in compositor — `Source { IsLiveCapture: true, CaptureKey: not null }` already skips null keys; fallback pattern `Source { AssetId: not null }` picks up the static image
|
||||
|
||||
**Rendering flow:**
|
||||
| Scenario | Preview | Compositor |
|
||||
|---|---|---|
|
||||
| Game detected | Live capture (opaque, covers static asset on backdrop) | `ScreenCaptureManager.GetLatestFrame` |
|
||||
| No game | Static image via `DisplaySource` → `_imageSource` on backdrop | `StaticPixelCache.Get(assetId)` |
|
||||
| Manual capture pick | Live capture | Live frame |
|
||||
|
||||
Reference in New Issue
Block a user