ExpandedSurfacePresentation
One live presentation of an expanded surface, as the host records it.
struct ExpandedSurfacePresentation
Constructed by hosts. A droplet receives one back from presentExpandedSurface(_:) and reads others out of DropletExpandedShelfState.
id identifies the presentation, not the surface, and the two are different on purpose. Tearing a takeover down runs after the host's close spring settles, and by then the user may have summoned the same surface again; a teardown keyed on the surface id would then kill the fresh one. The shipping code this aperture replaces carries a hand-rolled presentationID for exactly that reason. Capture the presentation you started with and compare before you act on a delayed callback.
Initializers
init(id:surfaceID:dropletID:displayID:)
init(id: UUID = UUID(), surfaceID: ExpandedSurfaceID, dropletID: DropletID, displayID: UInt32)
Creates a presentation record. Constructed by hosts, read by droplets.
Properties
displayID
let displayID: UInt32
The display hosting it, resolved by the host.
dropletID
let dropletID: DropletID
The droplet that owns it. Present so a droplet reading DropletExpandedShelfState can tell its own takeover from somebody else's, since the shelf is one surface shared by every droplet.
id
let id: UUID
Identity of this presentation.
surfaceID
let surfaceID: ExpandedSurfaceID
The surface being presented.