xwayland: Call xwl_window_buffer_add_damage_region from damage_report

Before clearing the damage region. Otherwise the damage region from a
Present flip may be ignored when replacing the window pixmap.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1314>
This commit is contained in:
Michel Dänzer 2024-02-19 18:43:47 +01:00 committed by Michel Dänzer
parent c1c5bf382e
commit 716805e3ad
3 changed files with 3 additions and 1 deletions

View File

@ -113,7 +113,7 @@ xwl_window_buffer_maybe_dispose(struct xwl_window_buffer *xwl_window_buffer)
return TRUE;
}
static void
void
xwl_window_buffer_add_damage_region(struct xwl_window *xwl_window)
{
RegionPtr region = xwl_window_get_damage_region(xwl_window);

View File

@ -31,6 +31,7 @@
#include "xwayland-types.h"
void xwl_window_buffer_add_damage_region(struct xwl_window *xwl_window);
void xwl_window_buffers_init(struct xwl_window *xwl_window);
void xwl_window_buffers_dispose(struct xwl_window *xwl_window);
void xwl_window_recycle_pixmap(struct xwl_window *xwl_window);

View File

@ -198,6 +198,7 @@ damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data)
/* This damage is from a Present flip, which already committed a new
* buffer for the surface, so we don't need to do anything in response
*/
xwl_window_buffer_add_damage_region(xwl_window);
RegionEmpty(DamageRegion(pDamage));
xorg_list_del(&xwl_window->link_damage);
xwl_window->present_flipped = FALSE;