diff options
Diffstat (limited to 'x11/libXdamage/patches/patch-aa')
-rw-r--r-- | x11/libXdamage/patches/patch-aa | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/x11/libXdamage/patches/patch-aa b/x11/libXdamage/patches/patch-aa new file mode 100644 index 00000000000..a7f063a122d --- /dev/null +++ b/x11/libXdamage/patches/patch-aa @@ -0,0 +1,33 @@ +$NetBSD: patch-aa,v 1.1 2008/01/29 03:50:26 bjs Exp $ + +libXdamage incorrectly encodes/decodes the 'More' field from the event. + +The client library for xdamage currently fails to fill in the 'more' +field. As a result, you get whatever uninitialised junk was there +before. + +The server sets the high bit of 'level' when there is +'more' (DamageNotifyMore = 0x80). A patch follows to fix the client +library. (from GIT) + +--- src/Xdamage.c.orig 2007-01-09 19:20:57.000000000 -0500 ++++ src/Xdamage.c +@@ -231,7 +231,8 @@ XDamageWireToEvent(Display *dpy, XEvent + aevent->display = dpy; + aevent->drawable = awire->drawable; + aevent->damage = awire->damage; +- aevent->level = awire->level; ++ aevent->level = awire->level & ~DamageNotifyMore; ++ aevent->more = (awire->level & DamageNotifyMore) ? True : False; + aevent->timestamp = awire->timestamp; + aevent->area.x = awire->area.x; + aevent->area.y = awire->area.y; +@@ -264,7 +265,7 @@ XDamageEventToWire(Display *dpy, XEvent + awire->type = aevent->type | (aevent->send_event ? 0x80 : 0); + awire->drawable = aevent->drawable; + awire->damage = aevent->damage; +- awire->level = aevent->level; ++ awire->level = aevent->level | (aevent->more ? DamageNotifyMore : 0); + awire->timestamp = aevent->timestamp; + awire->area.x = aevent->area.x; + awire->area.y = aevent->area.y; |