| // Copyright 2013 The Flutter 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 FLUTTER_SHELL_COMMON_DISPLAY_H_ |
| #define FLUTTER_SHELL_COMMON_DISPLAY_H_ |
| |
| #include <optional> |
| |
| #include "flutter/fml/macros.h" |
| #include "flutter/shell/common/variable_refresh_rate_reporter.h" |
| |
| namespace flutter { |
| |
| /// Unique ID per display that is stable until the Flutter application restarts. |
| /// See also: `flutter::Display` |
| typedef uint64_t DisplayId; |
| |
| /// To be used when the display refresh rate is unknown. |
| static constexpr double kUnknownDisplayRefreshRate = 0; |
| |
| /// Display refers to a graphics hardware system consisting of a framebuffer, |
| /// typically a monitor or a screen. This class holds the various display |
| /// settings. |
| class Display { |
| public: |
| //------------------------------------------------------------------------------ |
| /// @brief Construct a new Display object in case where the display id of the |
| /// display is known. In cases where there is more than one display, every |
| /// display is expected to have a display id. |
| /// |
| Display(DisplayId display_id, double refresh_rate) |
| : display_id_(display_id), refresh_rate_(refresh_rate) {} |
| |
| //------------------------------------------------------------------------------ |
| /// @brief Construct a new Display object when there is only a single display. |
| /// When there are multiple displays, every display must have a display id. |
| /// |
| explicit Display(double refresh_rate) |
| : display_id_({}), refresh_rate_(refresh_rate) {} |
| |
| virtual ~Display() = default; |
| |
| // Get the display's maximum refresh rate in the unit of frame per second. |
| // Return `kUnknownDisplayRefreshRate` if the refresh rate is unknown. |
| virtual double GetRefreshRate() const; |
| |
| /// Returns the `DisplayId` of the display. |
| std::optional<DisplayId> GetDisplayId() const { return display_id_; } |
| |
| private: |
| std::optional<DisplayId> display_id_; |
| double refresh_rate_; |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(Display); |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_COMMON_DISPLAY_H_ |