// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.display.types;

/// Type of the internal value in [`fuchsia.hardware.display.types/DisplayId`].
alias DisplayIdValue = uint64;

/// Unique identifier for a display device attached to the system.
///
/// [`fuchsia.hardware.display.types/INVALID_DISP_ID`] represents an invalid
/// value.
///
/// Values are unique within a [`fuchsia.hardware.display/Controller`]
/// connection. An external display will be associated with different display ID
/// values if it is disconnected and reconnected.
///
/// A display device may be identified by different values across boot cycles or
/// across different Controller connections. Software that needs to identify
/// displays (for example, to honor display-specific preferences) should use
/// [`fuchsia.hardware.display/Info`] identifiers, not display IDs.
///
/// This type is not related to the VESA DisplayID standard.
type DisplayId = struct {
    value DisplayIdValue;
};

// TODO(https://fxbug.dev/42079383): Use separate invalid ID constants for each ID type.

/// Invalid id for displays, images, and events.
const INVALID_DISP_ID DisplayIdValue = 0;
