xwayland: Use correct xwl_window lookup function in xwl_set_shape

In xwl_set_shape(), xwl_window_set_input_region() should be called only
when the input shape of the toplevel window changes.

However, given that xwl_window_from_window() is going to walk the
ancestor tree until it finds an xwl_window, that lookup function cannot
be used. Instead, xwl_window_get() should be used. It's going to return
a valid xwl_window object iff the specified window has one associated
with it.

Fixes: a4ed100c0 - xwayland: Set wl_surface input region
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1672
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
(cherry picked from commit 8c2b9f4e71)

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1535>
This commit is contained in:
Vlad Zahorodnii 2024-05-03 11:48:59 +03:00 committed by Olivier Fourdan
parent 5a4b654334
commit 88ab664fab

View file

@ -338,7 +338,7 @@ xwl_set_shape(WindowPtr window,
struct xwl_window *xwl_window;
xwl_screen = xwl_screen_get(screen);
xwl_window = xwl_window_from_window(window);
xwl_window = xwl_window_get(window);
screen->SetShape = xwl_screen->SetShape;
(*screen->SetShape) (window, kind);