19 #ifndef MIR_GRAPHICS_ANDROID_REAL_HWC_WRAPPER_H_ 20 #define MIR_GRAPHICS_ANDROID_REAL_HWC_WRAPPER_H_ 24 #include <hardware/hwcomposer.h> 27 #include <unordered_map> 49 std::shared_ptr<hwc_composer_device_1>
const& hwc_device,
50 std::shared_ptr<HwcReport>
const& report);
53 void subscribe_to_events(
54 void const* subscriber,
55 std::function<
void(
DisplayName, std::chrono::nanoseconds)>
const& vsync_callback,
56 std::function<
void(
DisplayName,
bool)>
const& hotplug_callback,
57 std::function<
void()>
const& invalidate_callback)
override;
58 void unsubscribe_from_events(
void const* subscriber) noexcept
override;
60 void prepare(std::array<hwc_display_contents_1_t*, HWC_NUM_DISPLAY_TYPES>
const&)
const override;
61 void set(std::array<hwc_display_contents_1_t*, HWC_NUM_DISPLAY_TYPES>
const&)
const override;
66 std::vector<ConfigId> display_configs(
DisplayName)
const override;
67 int display_attributes(
70 bool has_active_config(
DisplayName name)
const override;
74 void vsync(
DisplayName, std::chrono::nanoseconds) noexcept;
76 void invalidate() noexcept;
80 std::shared_ptr<hwc_composer_device_1>
const hwc_device;
81 std::shared_ptr<HwcReport>
const report;
82 std::mutex callback_map_lock;
85 std::function<void(DisplayName, std::chrono::nanoseconds)> vsync;
86 std::function<void(DisplayName, bool)> hotplug;
87 std::function<void()> invalidate;
89 std::unordered_map<void const*, Callbacks> callback_map;
90 std::atomic<bool> is_plugged[HWC_NUM_DISPLAY_TYPES];
All things Mir.
Definition: atomic_callback.h:25
Definition: real_hwc_wrapper.h:38
Definition: hwc_wrapper.h:43
PowerMode
Definition: power_mode.h:31
DisplayName
Definition: display_name.h:32
hwc_procs_t hooks
Definition: real_hwc_wrapper.h:40
Definition: int_wrapper.h:27
Definition: real_hwc_wrapper.h:44
Definition: android_input_receiver.h:36