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>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1516>
This commit is contained in:
Vlad Zahorodnii 2024-05-03 11:48:59 +03:00 committed by Marge Bot
parent 069ad69efe
commit 8c2b9f4e71

View File

@ -341,7 +341,7 @@ xwl_set_shape(WindowPtr window,
struct xwl_window *xwl_window; struct xwl_window *xwl_window;
xwl_screen = xwl_screen_get(screen); 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 = xwl_screen->SetShape;
(*screen->SetShape) (window, kind); (*screen->SetShape) (window, kind);