Weston under X crashes

Kristian Høgsberg hoegsberg at gmail.com
Tue Oct 23 10:49:55 PDT 2012


On Tue, Oct 23, 2012 at 05:12:43PM +0100, Niklas Hambüchen wrote:
> Can we make X Weston test-wise draw some fancy stuff into regions it is 
> forced to fill up in tiling WMs? That would make reproducing this a 
> little bit easier.

I don't really have a good suggestion there, but this patch should fix
it as far as I can see.

Kristian

>From 0e6e9ca45a97b6aeadb9decd6bef6673f083e7ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= <krh at bitplanet.net>
Date: Tue, 23 Oct 2012 13:04:09 -0400
Subject: [PATCH] compositor: Clip pointer coordinates on pointer enter as
 well

When tiling window managers resize a non-resizable window they're violating
ICCCM.  Not some hippie-community standard like EWMH, but ICCCM, which is
about as old and sacred as the constitution.  If they want to force a window
to be a size it wasn't designed for, at least they could have the decency to
reparent the client window into a bigger containing window of whatever size
they think it should be.  But apparently ICCCM compliance is too much to ask.

Anyway, all that just to say that it's really not our fault when we get an
enter event with coordinates outside the valid output region.  But we'll
clip it anyway and work around mis-behaving tiling WMs.
---
 src/compositor.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/src/compositor.c b/src/compositor.c
index c3ee70f..3597cf7 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1756,6 +1756,7 @@ notify_pointer_focus(struct weston_seat *seat, struct weston_output *output,
 	struct wl_pointer *pointer = seat->seat.pointer;
 
 	if (output) {
+		clip_pointer_motion(seat, &x, &y);
 		weston_seat_update_drag_surface(seat,
 						x - pointer->x,
 						y - pointer->y);
-- 
1.7.10.2



More information about the wayland-devel mailing list