summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-libs/libXi/files/fix-bad-unlock.patch')
-rw-r--r--x11-libs/libXi/files/fix-bad-unlock.patch529
1 files changed, 529 insertions, 0 deletions
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);
+