wlr_scene: Refactor presentation events

Instead of using the wlr_presentation helper to buffer the events,
handle these events ourselves.

This fixes the possibility of duplicate presentation events being sent
in rare direct scanout failure during commit.
This commit is contained in:
Alexander Orzechowski 2023-04-15 12:53:40 +02:00
parent 5e2a1e44f5
commit 62c5bd20a3
3 changed files with 52 additions and 16 deletions

View file

@ -149,7 +149,7 @@ struct wlr_scene_buffer {
struct wl_signal outputs_update; // struct wlr_scene_outputs_update_event
struct wl_signal output_enter; // struct wlr_scene_output
struct wl_signal output_leave; // struct wlr_scene_output
struct wl_signal output_present; // struct wlr_scene_output
struct wl_signal output_present; // struct wlr_output_event_present
struct wl_signal frame_done; // struct timespec
} events;
@ -198,6 +198,7 @@ struct wlr_scene_output {
struct wl_listener output_commit;
struct wl_listener output_damage;
struct wl_listener output_needs_frame;
struct wl_listener output_present;
struct wl_list damage_highlight_regions;