From defcd9b025c8a6ce844f8b2c772ee763cbc334b5 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 11 Dec 2020 18:14:58 +0100 Subject: backend/wayland: re-use wl_buffers Instead of re-importing a buffer each time we submit a new frame, re-use the wl_buffer objects if possible. --- include/backend/wayland.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/backend/wayland.h') diff --git a/include/backend/wayland.h b/include/backend/wayland.h index 0ff52b51..1c874b35 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -25,9 +25,11 @@ struct wlr_wl_backend { struct wlr_renderer *renderer; struct wlr_drm_format *format; struct wlr_allocator *allocator; + struct wl_list buffers; // wlr_wl_buffer.link size_t requested_outputs; size_t last_output_num; struct wl_listener local_display_destroy; + /* remote state */ struct wl_display *remote_display; struct wl_event_source *remote_display_src; @@ -47,6 +49,9 @@ struct wlr_wl_backend { struct wlr_wl_buffer { struct wlr_buffer *buffer; struct wl_buffer *wl_buffer; + bool released; + struct wl_list link; // wlr_wl_backend.buffers + struct wl_listener buffer_destroy; }; struct wlr_wl_presentation_feedback { @@ -130,6 +135,7 @@ struct wlr_wl_input_device *create_wl_input_device( struct wlr_wl_seat *seat, enum wlr_input_device_type type); bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl); void destroy_wl_seats(struct wlr_wl_backend *wl); +void destroy_wl_buffer(struct wlr_wl_buffer *buffer); extern const struct wl_seat_listener seat_listener; -- cgit v1.2.3