class Controller
Defined at line 59 of file ../../src/graphics/display/drivers/coordinator/controller.h
Multiplexes between display controller clients and display engine drivers.
Instances are not thread-safe, and must only be used on the driver
dispatcher.
Public Methods
void Controller (const Controller & )
Defined at line 85 of file ../../src/graphics/display/drivers/coordinator/controller.h
Controller & operator= (const Controller & )
Defined at line 86 of file ../../src/graphics/display/drivers/coordinator/controller.h
EngineDriverClient * engine_driver_client ()
Defined at line 133 of file ../../src/graphics/display/drivers/coordinator/controller.h
const display::EngineInfo & engine_info ()
May only be called after the display engine driver is connected.
Defined at line 139 of file ../../src/graphics/display/drivers/coordinator/controller.h
zx::result<std::unique_ptr<Controller>> Create (std::unique_ptr<EngineDriverClient> engine_driver_client, fdf::UnownedSynchronizedDispatcher driver_dispatcher)
Factory method for production use.
Creates and initializes a Controller instance.
Asynchronous work that manages the state of the display clients and
coordinates the display state between clients and engine drivers runs on
`driver_dispatcher`.
`engine_driver_client` must not be null.
`driver_dispatcher` must be running until `PrepareStop()` is called.
`driver_dispatcher` must be shut down when `Stop()` is called.
Defined at line 722 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void Controller (std::unique_ptr<EngineDriverClient> engine_driver_client, fdf::UnownedSynchronizedDispatcher driver_dispatcher)
Creates a new coordinator Controller instance. It creates a new Inspector
which will be solely owned by the Controller instance.
`engine_driver_client` must not be null.
Defined at line 795 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void ~Controller ()
Defined at line 813 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void PrepareStop ()
References the `PrepareStop()` method in the DFv2 (fdf::DriverBase) driver
lifecycle.
Defined at line 765 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OnDisplayAdded (std::unique_ptr<AddedDisplayInfo> added_display_info)
`EngineListener`:
Must run on `driver_dispatcher_`.
Defined at line 133 of file ../../src/graphics/display/drivers/coordinator/controller.cc
bool supports_capture ()
May only be called after the display engine driver is connected.
Defined at line 136 of file ../../src/graphics/display/drivers/coordinator/controller.h
fdf::UnownedSynchronizedDispatcher driver_dispatcher ()
Defined at line 141 of file ../../src/graphics/display/drivers/coordinator/controller.h
bool IsRunningOnDriverDispatcher ()
Defined at line 144 of file ../../src/graphics/display/drivers/coordinator/controller.h
const inspect::Inspector & inspector ()
Defined at line 148 of file ../../src/graphics/display/drivers/coordinator/controller.h
void OnDisplayRemoved (display::DisplayId removed_display_id)
Defined at line 148 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OnCaptureComplete ()
Defined at line 161 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OnDisplayVsync (display::DisplayId display_id, zx::time_monotonic timestamp, display::DriverConfigStamp driver_config_stamp)
Defined at line 196 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OnClientDead (ClientProxy * client)
Defined at line 497 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void SetVirtconMode (fuchsia_hardware_display::wire::VirtconMode virtcon_mode)
Defined at line 468 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void ApplyConfig (DisplayConfig & display_config, display::ConfigStamp client_config_stamp, ClientId client_id)
Defined at line 342 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void ImageWillBeDestroyed (display::DriverImageId driver_image_id)
ImageLifecycleListener:
Defined at line 444 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void ReleaseCaptureImage (display::DriverCaptureImageId driver_capture_image_id)
Defined at line 448 of file ../../src/graphics/display/drivers/coordinator/controller.cc
zx::result<std::span<const display::ModeAndId>> GetDisplayPreferredModes (display::DisplayId display_id)
The display modes are guaranteed to be valid as long as the display with
`display_id` is valid.
For a valid display, it's guaranteed that `GetDisplayPreferredModes()` is
non-empty.
Defined at line 528 of file ../../src/graphics/display/drivers/coordinator/controller.cc
zx::result<fbl::Vector<display::PixelFormat>> GetSupportedPixelFormats (display::DisplayId display_id)
Defined at line 544 of file ../../src/graphics/display/drivers/coordinator/controller.cc
template <typename Callback>
bool FindDisplayInfo (display::DisplayId display_id, Callback callback)
Calls `callback` with a const DisplayInfo
&
matching the given `display_id`.
Returns true iff a DisplayInfo with `display_id` was found and `callback`
was called.
The controller mutex is guaranteed to be held while `callback` is called.
Defined at line 239 of file ../../src/graphics/display/drivers/coordinator/controller.h
zx_status_t CreateClient (ClientPriority client_priority, fidl::ServerEnd<fuchsia_hardware_display::Coordinator> coordinator_server_end, fidl::ClientEnd<fuchsia_hardware_display::CoordinatorListener> coordinator_listener_client_end)
Typically called by OpenController/OpenVirtconController. However, this is made public
for use by testing services which provide a fake display controller.
Defined at line 583 of file ../../src/graphics/display/drivers/coordinator/controller.cc
display::DriverBufferCollectionId GetNextDriverBufferCollectionId ()
Defined at line 681 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OpenCoordinatorWithListenerForVirtcon (OpenCoordinatorWithListenerForVirtconRequestView request, OpenCoordinatorWithListenerForVirtconCompleter::Sync & completer)
`fidl::WireServer
<fuchsia
_hardware_display::Provider>`:
Defined at line 687 of file ../../src/graphics/display/drivers/coordinator/controller.cc
void OpenCoordinatorWithListenerForPrimary (OpenCoordinatorWithListenerForPrimaryRequestView request, OpenCoordinatorWithListenerForPrimaryCompleter::Sync & completer)
Defined at line 704 of file ../../src/graphics/display/drivers/coordinator/controller.cc