[PATCH xserver v2 2/7] xwayland: Allow pointer warp on the root window
Olivier Fourdan
ofourdan at redhat.com
Wed Apr 26 09:04:27 UTC 2017
Hey Carlos,
> Of sorts, as we can't honor pointer warping across the whole root window
> coordinates, peek the pointer focus in this case.
>
> Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> ---
> v2: Check that requester and focus window clients are the same
>
> hw/xwayland/xwayland.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
> index 9e1ecf8..9e24011 100644
> --- a/hw/xwayland/xwayland.c
> +++ b/hw/xwayland/xwayland.c
> @@ -180,6 +180,11 @@ xwl_cursor_warped_to(DeviceIntPtr device,
> xwl_seat = xwl_screen_get_default_seat(xwl_screen);
>
> xwl_window = xwl_window_from_window(window);
> + if (!xwl_window && !window->parent &&
> + client == wClient(xwl_seat->focus_window->window)) {
> + DebugF("Warp on root window, assuming pointer focus\n");
> + xwl_window = xwl_seat->focus_window;
> + }
> if (!xwl_window)
> return;
Just so you know, I was evaluating your patches while taking a look at bug 100740 [1] and noticed they actually crash Xwayland with the reproducer steps (basically blender with fly-mode <shift-f>) [2] - that's because the dest_win passed by blender for XIWarpPointer() is None (which is legit), so window->parent is a NULL pointer dereference.
Good news though is a small change in your patch can not only fix the crash but also fix the issue with blender as well, that's [3].
Only problem is that the client matching part needs to be avoided as in the case of blender, the client is blender but the focused surface belongs to gnome-shell [4], I am not sure why...
[1] https://bugs.freedesktop.org/show_bug.cgi?id=100740
[2] https://bugs.freedesktop.org/show_bug.cgi?id=100740#c6
[3] https://bugs.freedesktop.org/show_bug.cgi?id=100740#c9
[4] https://bugs.freedesktop.org/show_bug.cgi?id=100740#c10
Cheers,
Olivier
More information about the xorg-devel
mailing list