If the root window borderClip region is null, the PointInWindowIsVisible()
check fails if pointer warping is attempted on the root window, making
the warping operation bail out early.

Assume coordinates always lay inside the root window for this case,
the actual position will be clamped later within screen coordinates anyway.

Signed-off-by: Carlos Garnacho <[email protected]>
---

I'm honestly unsure about this one. hw/xwayland/xwayland.c explicitly
sets borderClip to a null region, I tried initializing it similarly to
how 4/7 does with winSize, but I got crashes in glamor paths.

Perhaps I'm going in the opposite direction than I should to get this
fixed, I don't know how do other rootless implementations deal with this,
however the condition change seemed safe to assume generically.

 dix/events.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dix/events.c b/dix/events.c
index cc26ba5..3e3a01e 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3575,7 +3575,7 @@ ProcWarpPointer(ClientPtr client)
              winX + stuff->srcX + (int) stuff->srcWidth < x) ||
             (stuff->srcHeight != 0 &&
              winY + stuff->srcY + (int) stuff->srcHeight < y) ||
-            !PointInWindowIsVisible(source, x, y))
+            (source->parent && !PointInWindowIsVisible(source, x, y)))
             return Success;
     }
     if (dest) {
-- 
2.9.3

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to