diff options
author | Jamey Sharp <jamey@minilop.net> | 2006-10-15 00:03:57 -0700 |
---|---|---|
committer | Jamey Sharp <jamey@minilop.net> | 2006-10-15 00:33:41 -0700 |
commit | 5dda1e1509d40ef64ebc816ce538cef462a4fa51 (patch) | |
tree | fc77232bf21e59247e95f77f0177a4114b0327a1 /src/XGetVers.c | |
parent | 8e317d390d1ef8f2c072957355b5d71db3b89c43 (diff) |
Don't call XInput_find_display in _XiGetExtensionVersion, while the Display lock is held.
_XiGetExtensionVersion has two callers. One had already called
XInput_find_display, and the other could easily do so outside the
Display lock. So I change the _XiGetExtensionVersion interface to
accept a previously-computed XExtDisplayInfo from the caller.
Besides being more correct, this should be slightly faster. :-)
Thanks to Magnus Kessler <Magnus.Kessler@gmx.net> for identifying
the bug and proposing a workaround.
Diffstat (limited to 'src/XGetVers.c')
-rw-r--r-- | src/XGetVers.c | 6 |
1 files changed, 3 insertions, 3 deletions
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 * dpy, _Xconst char *name) } 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); |