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.