diff --git a/.cvsignore b/.cvsignore index 2d7a6ee..7e5fe6a 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -libXext-1.1.tar.bz2 +libXext-1.1.2.tar.bz2 diff --git a/libXext-1.1-XAllocID.patch b/libXext-1.1-XAllocID.patch deleted file mode 100644 index d525633..0000000 --- a/libXext-1.1-XAllocID.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 956fd30e1046e5779ac0b6c07ec4f0e87250869a Mon Sep 17 00:00:00 2001 -From: Jamey Sharp -Date: Wed, 7 Oct 2009 19:31:21 -0700 -Subject: [PATCH] XAllocID must only be called with the Display lock held. - -This patch makes XShmAttach follow the same XID allocation pattern used in -other stubs, such as XShmCreatePixmap. - -Reported-by: -Signed-off-by: Jamey Sharp ---- - src/XShm.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -diff --git a/src/XShm.c b/src/XShm.c -index 922b4cb..38efa9f 100644 ---- a/src/XShm.c -+++ b/src/XShm.c -@@ -235,12 +235,11 @@ Status XShmAttach(Display *dpy, XShmSegmentInfo *shminfo) - - ShmCheckExtension (dpy, info, 0); - -- shminfo->shmseg = XAllocID(dpy); - LockDisplay(dpy); - GetReq(ShmAttach, req); - req->reqType = info->codes->major_opcode; - req->shmReqType = X_ShmAttach; -- req->shmseg = shminfo->shmseg; -+ req->shmseg = shminfo->shmseg = XAllocID(dpy); - req->shmid = shminfo->shmid; - req->readOnly = shminfo->readOnly ? xTrue : xFalse; - UnlockDisplay(dpy); --- -1.6.5.2 - diff --git a/libXext-1.1-event_vec-smash.patch b/libXext-1.1-event_vec-smash.patch deleted file mode 100644 index eff89f9..0000000 --- a/libXext-1.1-event_vec-smash.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 83fdb27df4ddc2fb088ddf2ec65f0db6b7c57287 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Thu, 26 Nov 2009 09:38:31 +1000 -Subject: [PATCH] Don't smash the event_vec if num_events differs between lib and server. - -If the library extension thinks there's more events to an extension than the -server actually has, the event_vec for the overlapping range can get -overwritten. This depends on the initialization order of the libraries. - -Reported-by: Nathan Kidd -Signed-off-by: Peter Hutterer -Reviewed-by: Julien Cristau ---- - src/extutil.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 46 insertions(+), 1 deletions(-) - -diff --git a/src/extutil.c b/src/extutil.c -index 8f4923a..a8f4d5d 100644 ---- a/src/extutil.c -+++ b/src/extutil.c -@@ -103,6 +103,7 @@ XExtDisplayInfo *XextAddDisplay ( - int nevents, - XPointer data) - { -+ static unsigned char ext_handlers[64] = {0}; - XExtDisplayInfo *dpyinfo; - - dpyinfo = (XExtDisplayInfo *) Xmalloc (sizeof (XExtDisplayInfo)); -@@ -117,10 +118,54 @@ XExtDisplayInfo *XextAddDisplay ( - */ - if (dpyinfo->codes) { - int i, j; -+ int idx = dpyinfo->codes->first_event & 0x3f; -+ -+ -+ /* Xlib extensions use compiled in event numbers. A new library -+ * against an older server may thus expect a different (higher) -+ * number of events than the server will send. We have no way of -+ * knowing the number of events for an extension, the server won't -+ * tell us. -+ * -+ * Depending on the extension initialization order, this smashes the -+ * event_vec[type] for anything after the extension with the -+ * different number of events. -+ * -+ * e.g. server with inputproto 1.3 expects 15 events, libXi with -+ * inputproto 2.0 expects 17 events. -+ * base code is 80, events [80,96] are handled by libXi. events [95, -+ * 96] belong to the next extension already though. -+ * This requires XI to be initialized after the extension occupying -+ * the next range of event codes. -+ * -+ * To avoid this, we have a zeroed out array of extension handlers. -+ * If an extension handler for an event type is already set, and the -+ * previous event code (before base_code) is the same extension, we -+ * have the nevents conflict. Unset all those handlers and allow -+ * overwriting them with the new handlers. -+ * -+ * If a handler for a (base + n) event is already set, stop -+ * registering this extension for the event codes. -+ * -+ * event_codes are subtracted by 64 since we don't need to worry -+ * about core. -+ */ -+ -+ if (idx && ext_handlers[idx - 1] == ext_handlers[idx]) { -+ for (i = idx; i < 64; i++) { -+ if (ext_handlers[idx - 1] == ext_handlers[i]) -+ ext_handlers[i] = 0; -+ else -+ break; -+ } -+ } - -- for (i = 0, j = dpyinfo->codes->first_event; i < nevents; i++, j++) { -+ for (i = 0, j = dpyinfo->codes->first_event; i < nevents; i++, j++, idx++) { -+ if (ext_handlers[idx]) /* don't smash the following extension */ -+ break; - XESetWireToEvent (dpy, j, hooks->wire_to_event); - XESetEventToWire (dpy, j, hooks->event_to_wire); -+ ext_handlers[idx] = dpyinfo->codes->first_event & 0x3f; - } - - /* register extension for XGE */ --- -1.6.5.2 - diff --git a/libXext.spec b/libXext.spec index b43b66a..b5e1a12 100644 --- a/libXext.spec +++ b/libXext.spec @@ -1,17 +1,13 @@ Summary: X.Org X11 libXext runtime library Name: libXext -Version: 1.1 -Release: 2%{?dist} +Version: 1.1.2 +Release: 1%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.x.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: ftp://ftp.x.org/pub/individual/lib/%{name}-%{version}.tar.bz2 -# From upstream, drop if updating to 1.1.1 -Patch1: libXext-1.1-XAllocID.patch -# From upstream -Patch2: libXext-1.1-event_vec-smash.patch BuildRequires: xorg-x11-proto-devel >= 7.4-23 BuildRequires: libX11-devel @@ -37,8 +33,6 @@ X.Org X11 libXext development package %prep %setup -q -%patch1 -p1 -%patch2 -p1 %build %configure --disable-static @@ -91,6 +85,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/*.3* %changelog +* Fri Jun 04 2010 Adam Jackson 1.1.2-1 +- libXext 1.1.2 + * Sat Dec 12 2009 Robert Scheck 1.1-2 - libXext-1.1-XAllocID.patch: call XAllocID with the display lock held. - libXext-1.1-event_vec-smash.patch: don't smash the event processing vector diff --git a/sources b/sources index 743c2ad..50198e2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b8ee455effbcaf5a475870e92ed6973c libXext-1.1.tar.bz2 +9e51f9cb7e0a38c7099ac1c0de1a1add libXext-1.1.2.tar.bz2