xwayland: Use xwl_window for damage closure
Preparation for later commits, no functional change intended. Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1300>
This commit is contained in:
parent
07f6032627
commit
d3448f7aad
|
@ -192,15 +192,10 @@ xwl_window_update_property(struct xwl_window *xwl_window,
|
||||||
static void
|
static void
|
||||||
damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data)
|
damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data)
|
||||||
{
|
{
|
||||||
WindowPtr window = data;
|
struct xwl_window *xwl_window = data;
|
||||||
struct xwl_window *xwl_window = xwl_window_get(window);
|
struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
|
||||||
struct xwl_screen *xwl_screen;
|
|
||||||
PixmapPtr window_pixmap;
|
PixmapPtr window_pixmap;
|
||||||
|
|
||||||
if (!xwl_window)
|
|
||||||
return;
|
|
||||||
|
|
||||||
xwl_screen = xwl_window->xwl_screen;
|
|
||||||
if (xwl_screen->ignore_damage)
|
if (xwl_screen->ignore_damage)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -218,37 +213,38 @@ damage_destroy(DamagePtr pDamage, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
register_damage(WindowPtr window)
|
register_damage(struct xwl_window *xwl_window)
|
||||||
{
|
{
|
||||||
|
WindowPtr toplevel = xwl_window->toplevel;
|
||||||
DamagePtr damage;
|
DamagePtr damage;
|
||||||
|
|
||||||
damage = DamageCreate(damage_report, damage_destroy, DamageReportNonEmpty,
|
damage = DamageCreate(damage_report, damage_destroy, DamageReportNonEmpty,
|
||||||
FALSE, window->drawable.pScreen, window);
|
FALSE, toplevel->drawable.pScreen, xwl_window);
|
||||||
if (damage == NULL) {
|
if (damage == NULL) {
|
||||||
ErrorF("Failed creating damage\n");
|
ErrorF("Failed creating damage\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DamageRegister(&window->drawable, damage);
|
DamageRegister(&toplevel->drawable, damage);
|
||||||
|
dixSetPrivate(&toplevel->devPrivates, &xwl_damage_private_key, damage);
|
||||||
dixSetPrivate(&window->devPrivates, &xwl_damage_private_key, damage);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
unregister_damage(WindowPtr window)
|
unregister_damage(struct xwl_window *xwl_window)
|
||||||
{
|
{
|
||||||
|
WindowPtr toplevel = xwl_window->toplevel;
|
||||||
DamagePtr damage;
|
DamagePtr damage;
|
||||||
|
|
||||||
damage = dixLookupPrivate(&window->devPrivates, &xwl_damage_private_key);
|
damage = dixLookupPrivate(&toplevel->devPrivates, &xwl_damage_private_key);
|
||||||
if (!damage)
|
if (!damage)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DamageUnregister(damage);
|
DamageUnregister(damage);
|
||||||
DamageDestroy(damage);
|
DamageDestroy(damage);
|
||||||
|
|
||||||
dixSetPrivate(&window->devPrivates, &xwl_damage_private_key, NULL);
|
dixSetPrivate(&toplevel->devPrivates, &xwl_damage_private_key, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
|
@ -1366,7 +1362,7 @@ xwl_realize_window(WindowPtr window)
|
||||||
|
|
||||||
if (window == xwl_window->toplevel &&
|
if (window == xwl_window->toplevel &&
|
||||||
!window_get_damage(window))
|
!window_get_damage(window))
|
||||||
return register_damage(window);
|
return register_damage(xwl_window);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1503,7 +1499,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||||
release_wl_surface_for_window(xwl_window);
|
release_wl_surface_for_window(xwl_window);
|
||||||
xorg_list_del(&xwl_window->link_damage);
|
xorg_list_del(&xwl_window->link_damage);
|
||||||
xorg_list_del(&xwl_window->link_window);
|
xorg_list_del(&xwl_window->link_window);
|
||||||
unregister_damage(window);
|
unregister_damage(xwl_window);
|
||||||
|
|
||||||
xwl_window_buffers_dispose(xwl_window);
|
xwl_window_buffers_dispose(xwl_window);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue