mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-22 09:59:48 +01:00
backend/drm: Destroy page flips on backend destroy
When we destroy the backend, page flips will no longer be invoked meaning those won't clean up the page flips for us.
This commit is contained in:
parent
3aed24b8d4
commit
b06d58fa8b
3 changed files with 9 additions and 3 deletions
|
@ -39,6 +39,11 @@ static void backend_destroy(struct wlr_backend *backend) {
|
|||
destroy_drm_connector(conn);
|
||||
}
|
||||
|
||||
struct wlr_drm_page_flip *page_flip, *page_flip_tmp;
|
||||
wl_list_for_each_safe(page_flip, page_flip_tmp, &drm->page_flips, link) {
|
||||
drm_page_flip_destroy(page_flip);
|
||||
}
|
||||
|
||||
wlr_backend_finish(backend);
|
||||
|
||||
wl_list_remove(&drm->display_destroy.link);
|
||||
|
|
|
@ -420,7 +420,7 @@ static void drm_connector_set_pending_page_flip(struct wlr_drm_connector *conn,
|
|||
conn->pending_page_flip = page_flip;
|
||||
}
|
||||
|
||||
static void page_flip_destroy(struct wlr_drm_page_flip *page_flip) {
|
||||
void drm_page_flip_destroy(struct wlr_drm_page_flip *page_flip) {
|
||||
if (!page_flip) {
|
||||
return;
|
||||
}
|
||||
|
@ -476,7 +476,7 @@ static bool drm_crtc_commit(struct wlr_drm_connector *conn,
|
|||
drm_fb_clear(&layer->pending_fb);
|
||||
}
|
||||
|
||||
page_flip_destroy(page_flip);
|
||||
drm_page_flip_destroy(page_flip);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
@ -1696,7 +1696,7 @@ static void handle_page_flip(int fd, unsigned seq,
|
|||
if (conn != NULL) {
|
||||
conn->pending_page_flip = NULL;
|
||||
}
|
||||
page_flip_destroy(page_flip);
|
||||
drm_page_flip_destroy(page_flip);
|
||||
|
||||
if (conn == NULL) {
|
||||
return;
|
||||
|
|
|
@ -193,6 +193,7 @@ bool drm_connector_supports_vrr(struct wlr_drm_connector *conn);
|
|||
size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
|
||||
struct wlr_drm_crtc *crtc);
|
||||
void drm_lease_destroy(struct wlr_drm_lease *lease);
|
||||
void drm_page_flip_destroy(struct wlr_drm_page_flip *page_flip);
|
||||
|
||||
struct wlr_drm_fb *get_next_cursor_fb(struct wlr_drm_connector *conn);
|
||||
struct wlr_drm_layer *get_drm_layer(struct wlr_drm_backend *drm,
|
||||
|
|
Loading…
Reference in a new issue