[PATCH xwayland 1/7] dix: assume warping on the RootWindow always happens on visible coords

Carlos Garnacho carlosg at gnome.org
Sat Nov 12 16:25:16 UTC 2016


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 <carlosg at gnome.org>
---

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



More information about the xorg-devel mailing list