output, cursor: explicit sync for cursor surfaces

This commit is contained in:
Félix Poisot 2026-03-20 11:51:03 +00:00
parent 4a9692013d
commit 4050d4977d
5 changed files with 56 additions and 11 deletions

View file

@ -36,6 +36,11 @@ struct wlr_output_mode {
struct wl_list link;
};
struct wlr_output_cursor_texture_sample_event {
struct wlr_drm_syncobj_timeline *release_timeline;
uint64_t release_point;
};
struct wlr_output_cursor {
struct wlr_output *output;
double x, y;
@ -51,6 +56,10 @@ struct wlr_output_cursor {
uint64_t wait_point;
struct wl_list link;
struct {
struct wl_signal texture_sample; // struct wlr_output_cursor_texture_sample_event
} events;
struct {
struct wl_listener renderer_destroy;
struct wlr_color_transform *color_transform;
@ -442,7 +451,8 @@ void wlr_output_lock_software_cursors(struct wlr_output *output, bool lock);
* This is a utility function that can be called when compositors render.
*/
void wlr_output_add_software_cursors_to_render_pass(struct wlr_output *output,
struct wlr_render_pass *render_pass, const pixman_region32_t *damage);
struct wlr_render_pass *render_pass, const pixman_region32_t *damage,
struct wlr_drm_syncobj_timeline *release_timeline, uint64_t release_point);
/**
* Get the set of DRM formats suitable for the primary buffer, assuming a
* buffer with the specified capabilities.