class GetEvent

Defined at line 95 of file fidling/gen/sdk/fidl/fuchsia.ui.input.internal/fuchsia.ui.input.internal/cpp/fidl/fuchsia.ui.input.internal/cpp/markers.h

Gets a duplicate handle to the shared kernel `ownership_event` whose

orthogonal signals inform clients and the system pipeline when direct

driver input access (`fuchsia.input.report.Service`) is granted or revoked:

- `Virtcon` (`target` = `virtcon: {}`): owns input iff

`InputOwnershipSignal.DISPLAY_UNOWNED` is asserted.

- `Starnix` (`target` = `view_ref`): owns direct input iff both

`InputOwnershipSignal.DISPLAY_PLATFORM_OWNED` and

`InputOwnershipSignal.INPUT_CLIENT_OWNED` are asserted.

- `SceneManager` (`target` = `platform: {}`): owns platform pipeline

input iff both `InputOwnershipSignal.DISPLAY_PLATFORM_OWNED` and

`InputOwnershipSignal.INPUT_PLATFORM_OWNED` are asserted (pauses whenever

`DISPLAY_UNOWNED` or `INPUT_CLIENT_OWNED` is asserted).

Requesting direct input ownership:

Calling `GetEvent` with `target` = `view_ref` is also how a view requests

direct input ownership; there is no separate request method. `GetEvent`

supports pre-registering a valid `ViewRef` before the view is created or

attached to the `ViewTree`. On success, the server registers the `ViewRef`

as the system-wide direct input client, immediately evaluates it against

the latest `ViewTree` snapshot if one exists, and continues evaluating it

against the single-view + full-screen criteria on every subsequent `ViewTree`

update. `INPUT_CLIENT_OWNED` is asserted only while the registered view

meets those criteria; otherwise `INPUT_PLATFORM_OWNED` is asserted.

- Registration is singleton and last-writer-wins: a successful call with

a different `ViewRef` replaces any previously registered view. This

mechanism is intended for a single trusted client replacing its own view

rather than independent concurrent components: because every `GetEvent`

call returns a handle to the same shared kernel `ownership_event`, replacing

the registered `ViewRef` does not silence earlier callers' handles when

their view is unlinked or destroyed and the new view goes fullscreen.

- If the `ViewTree` contains more than one view or overlay competing

with the registered view, the criteria are not met and ownership

falls back to the platform. Thus, when multiple views request direct

input while coexisting in the `ViewTree`, none of them is granted

direct input, regardless of which one registered last.

- Registration is tied to the lifetime of the view, not to this

channel or the returned event. Unlinking the view from the `ViewTree`

(placing it in `unconnected_views`) reverts ownership to

`INPUT_PLATFORM_OWNED` while retaining the registration, so re-linking

fullscreen restores `INPUT_CLIENT_OWNED`. Destroying the view permanently

drops the registration, at which point ownership reverts to the platform.

- Calls with `virtcon: {}` or `platform: {}` only observe ownership and

do not modify the registered direct client.

If `target` is set to an unsupported or unknown variant, the call

returns `InputOwnershipError.INVALID_TARGET`.

Public Members

static const bool kHasClientToServer
static const bool kHasClientToServerBody
static const bool kHasServerToClient
static const bool kHasServerToClientBody
static const bool kHasNonEmptyUserFacingResponse
static const bool kHasDomainError
static const bool kHasFrameworkError
static const uint64_t kOrdinal