What the surface shows now.
What the surface shows, now and on every change.
The agent asks to see the capture. A request while the capture is starting or on changes nothing.
Whether the request stands (the user now sees it).
The user said "Not now" to the agent's request. Nothing to decline without one.
The runtime's capture changed. Turning on answers the agent's request, and so does a camera check that ends with the camera off: the user said not now.
The session's video sources changed (the runtime's VideoSources$). The model is sent this capture's frames only while
its source (REALTIME_CAPTURE_SOURCE_IDS) is on and active; a capture with no source yet, or none any more, is not
sent. Only the view changes: the channel's state is the same, so the change handler hears nothing and the agent is
told nothing (the arbiter tells the model what it now sees).
Receives every change (one handler; null removes it).
Whether the channel lets the agent see pixels (its exposure).
The channel's state as the agent reads it.
The state of one capture channel (the Camera or the Screen Share channel): the agent's request, the runtime's capture, and whether the agent sees it. Framework-free: the channel feeds it and streams its changes; the surface shows its View$. It decides nothing about policy: the runtime refuses a capture its channel's policy does not allow, and reports that as a failed capture.