| // Copyright 2020 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. |
| |
| #ifndef SRC_UI_LIB_DISPLAY_GET_HARDWARE_DISPLAY_CONTROLLER_H_ |
| #define SRC_UI_LIB_DISPLAY_GET_HARDWARE_DISPLAY_CONTROLLER_H_ |
| |
| #include <fuchsia/hardware/display/cpp/fidl.h> |
| #include <lib/fit/promise.h> |
| |
| namespace ui_display { |
| |
| // TODO(fxbug.dev/33675): 'display-controller.fidl' requires the client to keep |dc_device| open; it |
| // is otherwise unused. Eventually, only |controller| will be required. |
| struct DisplayControllerHandles { |
| fidl::InterfaceHandle<fuchsia::hardware::display::Controller> controller; |
| zx::channel dc_device; |
| }; |
| |
| // Connect to the fuchsia::hardware::display::Provider service, and return a promise which will be |
| // resolved when the display controller is obtained. One variant uses the explicitly-provided |
| // service, and the other variant finds the service in the component's environment. |
| // |
| // If the display controller cannot be obtained for some reason, the handles will be null. |
| fit::promise<DisplayControllerHandles> GetHardwareDisplayController( |
| std::shared_ptr<fuchsia::hardware::display::ProviderPtr> provider); |
| fit::promise<DisplayControllerHandles> GetHardwareDisplayController(); |
| |
| } // namespace ui_display |
| |
| #endif // SRC_UI_LIB_DISPLAY_GET_HARDWARE_DISPLAY_CONTROLLER_H_ |