summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Baergen <joshuabaergen@gentoo.org>2006-10-16 03:11:52 +0000
committerJoshua Baergen <joshuabaergen@gentoo.org>2006-10-16 03:11:52 +0000
commit222a0090664ecb6cd8e20deea455c8fe46e32cc9 (patch)
tree6ee07d6f6999e8e5c11d067d47071334b4f5d99e /x11-libs
parentAdd a DisplayUnlock fix from upstream. Fixes related XCB asserts. (diff)
downloadgentoo-2-222a0090664ecb6cd8e20deea455c8fe46e32cc9.tar.gz
gentoo-2-222a0090664ecb6cd8e20deea455c8fe46e32cc9.tar.bz2
gentoo-2-222a0090664ecb6cd8e20deea455c8fe46e32cc9.zip
Add DisplayUnlock fixes from upstream. Fixes related XCB asserts.
(Portage version: 2.1.2_pre3-r2)
Diffstat (limited to 'x11-libs')
-rw-r--r--x11-libs/libXi/ChangeLog9
-rw-r--r--x11-libs/libXi/files/digest-libXi-1.0.1-r13
-rw-r--r--x11-libs/libXi/files/fix-bad-unlock.patch529
-rw-r--r--x11-libs/libXi/libXi-1.0.1-r1.ebuild20
4 files changed, 560 insertions, 1 deletions
diff --git a/x11-libs/libXi/ChangeLog b/x11-libs/libXi/ChangeLog
index 148268af9f8f..e0e8b0afa7ac 100644
--- a/x11-libs/libXi/ChangeLog
+++ b/x11-libs/libXi/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for x11-libs/libXi
# Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/libXi/ChangeLog,v 1.29 2006/10/01 17:00:51 dberkholz Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/libXi/ChangeLog,v 1.30 2006/10/16 03:11:52 joshuabaergen Exp $
+
+*libXi-1.0.1-r1 (16 Oct 2006)
+
+ 16 Oct 2006; Joshua Baergen <joshuabaergen@gentoo.org>
+ +files/fix-bad-unlock.patch, -files/fix_shadow_manpages.patch,
+ +libXi-1.0.1-r1.ebuild:
+ Add DisplayUnlock fixes from upstream. Fixes related XCB asserts.
01 Oct 2006; Donnie Berkholz <dberkholz@gentoo.org>; libXi-1.0.1.ebuild:
libXext has a runtime dep on xextproto now, so we don't need to depend on it
diff --git a/x11-libs/libXi/files/digest-libXi-1.0.1-r1 b/x11-libs/libXi/files/digest-libXi-1.0.1-r1
new file mode 100644
index 000000000000..ddf607d16b20
--- /dev/null
+++ b/x11-libs/libXi/files/digest-libXi-1.0.1-r1
@@ -0,0 +1,3 @@
+MD5 0efe6758c98257edb009551eac53fcfb libXi-1.0.1.tar.bz2 246058
+RMD160 29e67e44b91ce16d11741b5e053bfacf7e78be1e libXi-1.0.1.tar.bz2 246058
+SHA256 d08fb359d827d5ec89caa103bc4c679c713e98c9e02da0cfd9149e12a4adda8f libXi-1.0.1.tar.bz2 246058
diff --git a/x11-libs/libXi/files/fix-bad-unlock.patch b/x11-libs/libXi/files/fix-bad-unlock.patch
new file mode 100644
index 000000000000..4bc1a533381a
--- /dev/null
+++ b/x11-libs/libXi/files/fix-bad-unlock.patch
@@ -0,0 +1,529 @@
+diff --git a/src/XExtInt.c b/src/XExtInt.c
+index e5baccb..aa838ef 100644
+--- a/src/XExtInt.c
++++ b/src/XExtInt.c
+@@ -207,7 +207,7 @@ _XiCheckExtInit(dpy, version_index)
+ return (-1);
+ }
+ ((XInputData *) info->data)->vers =
+- _XiGetExtensionVersion(dpy, "XInputExtension");
++ _XiGetExtensionVersion(dpy, "XInputExtension", info);
+ }
+
+ if (versions[version_index].major_version > Dont_Check) {
+diff --git a/src/XGetVers.c b/src/XGetVers.c
+index 1f4fd7a..ef41fea 100644
+--- a/src/XGetVers.c
++++ b/src/XGetVers.c
+@@ -64,9 +64,10 @@ XExtensionVersion *
+ XGetExtensionVersion(register Display * dpy, _Xconst char *name)
+ {
+ XExtensionVersion *ext;
++ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- ext = _XiGetExtensionVersion(dpy, name);
++ ext = _XiGetExtensionVersion(dpy, name, info);
+ if (ext != (XExtensionVersion *) NoSuchExtension) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+@@ -75,12 +76,11 @@ XGetExtensionVersion(register Display *
+ }
+
+ XExtensionVersion *
+-_XiGetExtensionVersion(register Display * dpy, _Xconst char *name)
++_XiGetExtensionVersion(register Display * dpy, _Xconst char *name, XExtDisplayInfo *info)
+ {
+ xGetExtensionVersionReq *req;
+ xGetExtensionVersionReply rep;
+ XExtensionVersion *ext;
+- XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ if (_XiCheckExtInit(dpy, Dont_Check) == -1)
+ return ((XExtensionVersion *) NoSuchExtension);
+diff --git a/src/XIint.h b/src/XIint.h
+index ba965a6..ae6d33f 100644
+--- a/src/XIint.h
++++ b/src/XIint.h
+@@ -12,6 +12,6 @@ extern XExtDisplayInfo *XInput_find_disp
+
+ extern int _XiCheckExtInit(Display *, int);
+
+-extern XExtensionVersion *_XiGetExtensionVersion(Display *, _Xconst char *);
++extern XExtensionVersion *_XiGetExtensionVersion(Display *, _Xconst char *, XExtDisplayInfo *);
+
+ #endif
+diff --git a/src/XAllowDv.c b/src/XAllowDv.c
+index 94a27ca..7fd2a07 100644
+--- a/src/XAllowDv.c
++++ b/src/XAllowDv.c
+@@ -71,7 +71,7 @@ XAllowDeviceEvents(dpy, dev, event_mode,
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(AllowDeviceEvents, req);
+diff --git a/src/XChgDCtl.c b/src/XChgDCtl.c
+index a196523..9e71475 100644
+--- a/src/XChgDCtl.c
++++ b/src/XChgDCtl.c
+@@ -74,7 +74,7 @@ XChangeDeviceControl(dpy, dev, control,
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Add_XChangeDeviceControl) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Add_XChangeDeviceControl, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangeDeviceControl, req);
+diff --git a/src/XChgFCtl.c b/src/XChgFCtl.c
+index 32c7b24..e499b41 100644
+--- a/src/XChgFCtl.c
++++ b/src/XChgFCtl.c
+@@ -73,7 +73,7 @@ XChangeFeedbackControl(dpy, dev, mask, f
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangeFeedbackControl, req);
+diff --git a/src/XChgKMap.c b/src/XChgKMap.c
+index d0a334f..73de754 100644
+--- a/src/XChgKMap.c
++++ b/src/XChgKMap.c
+@@ -74,7 +74,7 @@ XChangeDeviceKeyMapping(dpy, dev, first,
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangeDeviceKeyMapping, req);
+diff --git a/src/XChgKbd.c b/src/XChgKbd.c
+index feba239..1b01207 100644
+--- a/src/XChgKbd.c
++++ b/src/XChgKbd.c
+@@ -70,7 +70,7 @@ XChangeKeyboardDevice(dpy, dev)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangeKeyboardDevice, req);
+diff --git a/src/XChgPnt.c b/src/XChgPnt.c
+index 9e0a617..6123398 100644
+--- a/src/XChgPnt.c
++++ b/src/XChgPnt.c
+@@ -72,7 +72,7 @@ XChangePointerDevice(dpy, dev, xaxis, ya
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangePointerDevice, req);
+diff --git a/src/XChgProp.c b/src/XChgProp.c
+index 6939cb3..0c7377f 100644
+--- a/src/XChgProp.c
++++ b/src/XChgProp.c
+@@ -73,7 +73,7 @@ XChangeDeviceDontPropagateList(dpy, wind
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(ChangeDeviceDontPropagateList, req);
+diff --git a/src/XCloseDev.c b/src/XCloseDev.c
+index 71e792a..ca19860 100644
+--- a/src/XCloseDev.c
++++ b/src/XCloseDev.c
+@@ -69,7 +69,7 @@ XCloseDevice(dpy, dev)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(CloseDevice, req);
+diff --git a/src/XDevBell.c b/src/XDevBell.c
+index 276a1b8..73f2e35 100644
+--- a/src/XDevBell.c
++++ b/src/XDevBell.c
+@@ -71,7 +71,7 @@ XDeviceBell(dpy, dev, feedbackclass, fee
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Add_XDeviceBell) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Add_XDeviceBell, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(DeviceBell, req);
+diff --git a/src/XExtInt.c b/src/XExtInt.c
+index aa838ef..b7297dc 100644
+--- a/src/XExtInt.c
++++ b/src/XExtInt.c
+@@ -191,12 +191,12 @@ _xidevicebusy(dpy, error)
+ */
+
+ int
+-_XiCheckExtInit(dpy, version_index)
++_XiCheckExtInit(dpy, version_index, info)
+ register Display *dpy;
+ register int version_index;
++ XExtDisplayInfo *info;
+ {
+ XExtensionVersion *ext;
+- XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ XInputCheckExtension(dpy, info, -1);
+
+diff --git a/src/XGMotion.c b/src/XGMotion.c
+index abcc06a..daa8792 100644
+--- a/src/XGMotion.c
++++ b/src/XGMotion.c
+@@ -85,7 +85,7 @@ Time stop;
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XDeviceTimeCoord *) NoSuchExtension);
+
+ GetReq(GetDeviceMotionEvents, req);
+diff --git a/src/XGetBMap.c b/src/XGetBMap.c
+index 1eaaa23..15cad74 100644
+--- a/src/XGetBMap.c
++++ b/src/XGetBMap.c
+@@ -81,7 +81,7 @@ XGetDeviceButtonMapping(dpy, device, map
+ xGetDeviceButtonMappingReply rep;
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(GetDeviceButtonMapping, req);
+
+diff --git a/src/XGetDCtl.c b/src/XGetDCtl.c
+index 139f7e7..8d034bf 100644
+--- a/src/XGetDCtl.c
++++ b/src/XGetDCtl.c
+@@ -78,7 +78,7 @@ XGetDeviceControl(dpy, dev, control)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Add_XChangeDeviceControl) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Add_XChangeDeviceControl, info) == -1)
+ return ((XDeviceControl *) NoSuchExtension);
+
+ GetReq(GetDeviceControl, req);
+diff --git a/src/XGetFCtl.c b/src/XGetFCtl.c
+index 0101fc0..af4578c 100644
+--- a/src/XGetFCtl.c
++++ b/src/XGetFCtl.c
+@@ -78,7 +78,7 @@ XGetFeedbackControl(dpy, dev, num_feedba
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XFeedbackState *) NoSuchExtension);
+
+ GetReq(GetFeedbackControl, req);
+diff --git a/src/XGetKMap.c b/src/XGetKMap.c
+index 59f6f93..0381e86 100644
+--- a/src/XGetKMap.c
++++ b/src/XGetKMap.c
+@@ -76,7 +76,7 @@ #endif
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((KeySym *) NoSuchExtension);
+
+ GetReq(GetDeviceKeyMapping, req);
+diff --git a/src/XGetMMap.c b/src/XGetMMap.c
+index 4a8c32f..ef92281 100644
+--- a/src/XGetMMap.c
++++ b/src/XGetMMap.c
+@@ -72,7 +72,7 @@ XGetDeviceModifierMapping(dpy, dev)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XModifierKeymap *) NoSuchExtension);
+
+ GetReq(GetDeviceModifierMapping, req);
+diff --git a/src/XGetProp.c b/src/XGetProp.c
+index 0ea8ceb..71d844b 100644
+--- a/src/XGetProp.c
++++ b/src/XGetProp.c
+@@ -75,7 +75,7 @@ Window window;
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XEventClass *) NoSuchExtension);
+
+ GetReq(GetDeviceDontPropagateList, req);
+diff --git a/src/XGetVers.c b/src/XGetVers.c
+index ef41fea..d3c765a 100644
+--- a/src/XGetVers.c
++++ b/src/XGetVers.c
+@@ -82,7 +82,7 @@ _XiGetExtensionVersion(register Display
+ xGetExtensionVersionReply rep;
+ XExtensionVersion *ext;
+
+- if (_XiCheckExtInit(dpy, Dont_Check) == -1)
++ if (_XiCheckExtInit(dpy, Dont_Check, info) == -1)
+ return ((XExtensionVersion *) NoSuchExtension);
+
+ GetReq(GetExtensionVersion, req);
+diff --git a/src/XGrDvBut.c b/src/XGrDvBut.c
+index fbc26ba..6e35099 100644
+--- a/src/XGrDvBut.c
++++ b/src/XGrDvBut.c
+@@ -80,7 +80,7 @@ XGrabDeviceButton(dpy, dev, button, modi
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(GrabDeviceButton, req);
+diff --git a/src/XGrDvKey.c b/src/XGrDvKey.c
+index 6731e2c..1389753 100644
+--- a/src/XGrDvKey.c
++++ b/src/XGrDvKey.c
+@@ -80,7 +80,7 @@ XGrabDeviceKey(dpy, dev, key, modifiers,
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(GrabDeviceKey, req);
+diff --git a/src/XGrabDev.c b/src/XGrabDev.c
+index 536e369..92f1c11 100644
+--- a/src/XGrabDev.c
++++ b/src/XGrabDev.c
+@@ -78,7 +78,7 @@ XGrabDevice(dpy, dev, grab_window, owner
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(GrabDevice, req);
+diff --git a/src/XGtFocus.c b/src/XGtFocus.c
+index 08cebd9..4e63918 100644
+--- a/src/XGtFocus.c
++++ b/src/XGtFocus.c
+@@ -73,7 +73,7 @@ XGetDeviceFocus(dpy, dev, focus, revert_
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(GetDeviceFocus, req);
+diff --git a/src/XGtSelect.c b/src/XGtSelect.c
+index 0f63caf..9f596fd 100644
+--- a/src/XGtSelect.c
++++ b/src/XGtSelect.c
+@@ -76,7 +76,7 @@ XGetSelectedExtensionEvents(dpy, w, this
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(GetSelectedExtensionEvents, req);
+
+diff --git a/src/XIint.h b/src/XIint.h
+index ae6d33f..f35619c 100644
+--- a/src/XIint.h
++++ b/src/XIint.h
+@@ -10,7 +10,7 @@ #define _XIINT_H_
+
+ extern XExtDisplayInfo *XInput_find_display(Display *);
+
+-extern int _XiCheckExtInit(Display *, int);
++extern int _XiCheckExtInit(Display *, int, XExtDisplayInfo *);
+
+ extern XExtensionVersion *_XiGetExtensionVersion(Display *, _Xconst char *, XExtDisplayInfo *);
+
+diff --git a/src/XListDev.c b/src/XListDev.c
+index ea9aa62..b9a617d 100644
+--- a/src/XListDev.c
++++ b/src/XListDev.c
+@@ -82,7 +82,7 @@ XListInputDevices(dpy, ndevices)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XDeviceInfo *) NULL);
+
+ GetReq(ListInputDevices, req);
+diff --git a/src/XOpenDev.c b/src/XOpenDev.c
+index ed168a6..d220330 100644
+--- a/src/XOpenDev.c
++++ b/src/XOpenDev.c
+@@ -72,7 +72,7 @@ XOpenDevice(dpy, id)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XDevice *) NoSuchExtension);
+
+ GetReq(OpenDevice, req);
+diff --git a/src/XQueryDv.c b/src/XQueryDv.c
+index a3a75f2..540f224 100644
+--- a/src/XQueryDv.c
++++ b/src/XQueryDv.c
+@@ -76,7 +76,7 @@ XQueryDeviceState(dpy, dev)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return ((XDeviceState *) NoSuchExtension);
+
+ GetReq(QueryDeviceState, req);
+diff --git a/src/XSelect.c b/src/XSelect.c
+index b23829a..af0fb84 100644
+--- a/src/XSelect.c
++++ b/src/XSelect.c
+@@ -71,7 +71,7 @@ XSelectExtensionEvent(dpy, w, event_list
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(SelectExtensionEvent, req);
+
+diff --git a/src/XSetBMap.c b/src/XSetBMap.c
+index bdfe501..cad6976 100644
+--- a/src/XSetBMap.c
++++ b/src/XSetBMap.c
+@@ -75,7 +75,7 @@ XSetDeviceButtonMapping(dpy, device, map
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(SetDeviceButtonMapping, req);
+ req->reqType = info->codes->major_opcode;
+diff --git a/src/XSetDVal.c b/src/XSetDVal.c
+index 6b382f1..43702b0 100644
+--- a/src/XSetDVal.c
++++ b/src/XSetDVal.c
+@@ -74,7 +74,7 @@ XSetDeviceValuators(dpy, dev, valuators,
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Add_XSetDeviceValuators) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Add_XSetDeviceValuators, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(SetDeviceValuators, req);
+diff --git a/src/XSetMMap.c b/src/XSetMMap.c
+index b0838f6..1077433 100644
+--- a/src/XSetMMap.c
++++ b/src/XSetMMap.c
+@@ -72,7 +72,7 @@ XSetDeviceModifierMapping(dpy, dev, modm
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReqExtra(SetDeviceModifierMapping, mapSize, req);
+diff --git a/src/XSetMode.c b/src/XSetMode.c
+index 278c4ff..94e2b3d 100644
+--- a/src/XSetMode.c
++++ b/src/XSetMode.c
+@@ -71,7 +71,7 @@ XSetDeviceMode(dpy, dev, mode)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(SetDeviceMode, req);
+diff --git a/src/XSndExEv.c b/src/XSndExEv.c
+index 6d65745..71431cd 100644
+--- a/src/XSndExEv.c
++++ b/src/XSndExEv.c
+@@ -81,7 +81,7 @@ XSendExtensionEvent(dpy, dev, dest, prop
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ /* call through display to find proper conversion routine */
+diff --git a/src/XUngrDev.c b/src/XUngrDev.c
+index ecc8887..70ba03d 100644
+--- a/src/XUngrDev.c
++++ b/src/XUngrDev.c
+@@ -70,7 +70,7 @@ XUngrabDevice(dpy, dev, time)
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+
+ GetReq(UngrabDevice, req);
+diff --git a/src/XUngrDvB.c b/src/XUngrDvB.c
+index 07f2c3f..77dbe77 100644
+--- a/src/XUngrDvB.c
++++ b/src/XUngrDvB.c
+@@ -73,7 +73,7 @@ XUngrabDeviceButton(dpy, dev, button, mo
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(UngrabDeviceButton, req);
+
+diff --git a/src/XUngrDvK.c b/src/XUngrDvK.c
+index e9e4cdf..0ae3178 100644
+--- a/src/XUngrDvK.c
++++ b/src/XUngrDvK.c
+@@ -73,7 +73,7 @@ XUngrabDeviceKey(dpy, dev, key, modifier
+ XExtDisplayInfo *info = XInput_find_display(dpy);
+
+ LockDisplay(dpy);
+- if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1)
++ if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
+ return (NoSuchExtension);
+ GetReq(UngrabDeviceKey, req);
+
diff --git a/x11-libs/libXi/libXi-1.0.1-r1.ebuild b/x11-libs/libXi/libXi-1.0.1-r1.ebuild
new file mode 100644
index 000000000000..29d83f2b9783
--- /dev/null
+++ b/x11-libs/libXi/libXi-1.0.1-r1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/libXi/libXi-1.0.1-r1.ebuild,v 1.1 2006/10/16 03:11:52 joshuabaergen Exp $
+
+# Must be before x-modular eclass is inherited
+#SNAPSHOT="yes"
+
+inherit x-modular
+
+DESCRIPTION="X.Org Xi library"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+
+RDEPEND="x11-libs/libX11
+ x11-libs/libXext"
+DEPEND="${RDEPEND}
+ x11-proto/xproto
+ x11-proto/inputproto"
+
+PATCHES="${FILESDIR}/fix-bad-unlock.patch"