diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c index e962ccc15..33a6f3168 100644 --- a/hw/xwayland/xwayland-glamor.c +++ b/hw/xwayland/xwayland-glamor.c @@ -788,10 +788,10 @@ xwl_window_dmabuf_feedback_done(void *data, xwl_window->window->drawable.id, xwl_window->has_implicit_scanout_support ? "" : "not"); - /* If the linux-dmabuf v4 per-surface feedback changed, recycle the + /* If the linux-dmabuf v4 per-surface feedback changed, dispose of the * window buffers so that they get re-created with appropriate parameters. */ - xwl_window_buffers_recycle(xwl_window); + xwl_window_buffers_dispose(xwl_window); } static void diff --git a/hw/xwayland/xwayland-window-buffers.c b/hw/xwayland/xwayland-window-buffers.c index d2cf3c3fe..c3b35c459 100644 --- a/hw/xwayland/xwayland-window-buffers.c +++ b/hw/xwayland/xwayland-window-buffers.c @@ -39,7 +39,6 @@ struct xwl_window_buffer { struct xwl_window *xwl_window; PixmapPtr pixmap; RegionPtr damage_region; - Bool recycle_on_release; int refcnt; uint32_t time; struct xorg_list link_buffer; @@ -114,16 +113,6 @@ xwl_window_buffer_maybe_dispose(struct xwl_window_buffer *xwl_window_buffer) return TRUE; } -static void -xwl_window_buffer_recycle(struct xwl_window_buffer *xwl_window_buffer) -{ - RegionEmpty(xwl_window_buffer->damage_region); - xwl_window_buffer->recycle_on_release = FALSE; - - if (xwl_window_buffer->pixmap) - xwl_window_buffer_destroy_pixmap (xwl_window_buffer); -} - static void xwl_window_buffer_add_damage_region(struct xwl_window *xwl_window, RegionPtr damage_region) @@ -199,9 +188,6 @@ xwl_window_buffer_release_callback(void *data) if (xwl_window_buffer_maybe_dispose(xwl_window_buffer)) return; - if (xwl_window_buffer->recycle_on_release) - xwl_window_buffer_recycle(xwl_window_buffer); - /* We append the buffers to the end of the list, as we pick the last * entry again when looking for new available buffers, that means the * least used buffers will remain at the beginning of the list so that @@ -234,29 +220,6 @@ xwl_window_buffers_init(struct xwl_window *xwl_window) xorg_list_init(&xwl_window->window_buffers_unavailable); } -void -xwl_window_buffers_recycle(struct xwl_window *xwl_window) -{ - struct xwl_window_buffer *xwl_window_buffer, *tmp; - - /* Dispose available buffers */ - xorg_list_for_each_entry_safe(xwl_window_buffer, tmp, - &xwl_window->window_buffers_available, - link_buffer) { - xwl_window_buffer_maybe_dispose(xwl_window_buffer); - } - - if (xwl_window->window_buffers_timer) - TimerCancel(xwl_window->window_buffers_timer); - - /* Mark the others for recycle on release */ - xorg_list_for_each_entry(xwl_window_buffer, - &xwl_window->window_buffers_unavailable, - link_buffer) { - xwl_window_buffer->recycle_on_release = TRUE; - } -} - void xwl_window_buffers_dispose(struct xwl_window *xwl_window) { @@ -280,10 +243,8 @@ xwl_window_buffers_dispose(struct xwl_window *xwl_window) xwl_window_buffer_maybe_dispose(xwl_window_buffer); } - if (xwl_window->window_buffers_timer) { - TimerFree(xwl_window->window_buffers_timer); - xwl_window->window_buffers_timer = 0; - } + if (xwl_window->window_buffers_timer) + TimerCancel(xwl_window->window_buffers_timer); } PixmapPtr diff --git a/hw/xwayland/xwayland-window-buffers.h b/hw/xwayland/xwayland-window-buffers.h index 8031f24d5..585fa6df1 100644 --- a/hw/xwayland/xwayland-window-buffers.h +++ b/hw/xwayland/xwayland-window-buffers.h @@ -33,7 +33,6 @@ #include "regionstr.h" void xwl_window_buffers_init(struct xwl_window *xwl_window); -void xwl_window_buffers_recycle(struct xwl_window *xwl_window); void xwl_window_buffers_dispose(struct xwl_window *xwl_window); PixmapPtr xwl_window_buffers_get_pixmap(struct xwl_window *xwl_window, RegionPtr damage_region); diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c index 4978f37c7..a6a4cf8f5 100644 --- a/hw/xwayland/xwayland-window.c +++ b/hw/xwayland/xwayland-window.c @@ -1192,6 +1192,9 @@ xwl_unrealize_window(WindowPtr window) xwl_window_buffers_dispose(xwl_window); + if (xwl_window->window_buffers_timer) + TimerFree(xwl_window->window_buffers_timer); + if (xwl_window->frame_callback) wl_callback_destroy(xwl_window->frame_callback); @@ -1229,7 +1232,7 @@ xwl_window_set_window_pixmap(WindowPtr window, xwl_window = xwl_window_get(window); if (xwl_window) - xwl_window_buffers_recycle(xwl_window); + xwl_window_buffers_dispose(xwl_window); } Bool