diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c index 1610d0ea0..4b491e7fb 100644 --- a/hw/xwayland/xwayland-window.c +++ b/hw/xwayland/xwayland-window.c @@ -301,8 +301,10 @@ damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data) struct xwl_screen *xwl_screen = xwl_screen_get(screen); PixmapPtr window_pixmap; - if (xwl_window && - xwl_window->surface_window_damage && + if (!xwl_window) + return; + + if (xwl_window->surface_window_damage && RegionNotEmpty(pRegion)) { if (!RegionNotEmpty(xwl_window->surface_window_damage)) need_source_validate_inc(xwl_screen); @@ -315,7 +317,7 @@ damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data) if (xwl_screen->ignore_damage) return; - if (xwl_window && xorg_list_is_empty(&xwl_window->link_damage)) + if (xorg_list_is_empty(&xwl_window->link_damage)) xorg_list_add(&xwl_window->link_damage, &xwl_screen->damage_window_list); window_pixmap = screen->GetWindowPixmap(xwl_window->surface_window); @@ -1638,8 +1640,10 @@ xwl_realize_window(WindowPtr window) } xwl_window = ensure_surface_for_window(window); - if (!xwl_window) + if (!xwl_window) { + unregister_damage(window); return FALSE; + } return TRUE; }