Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
libXi
U_Refactor-XGetExtensionVersion.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File U_Refactor-XGetExtensionVersion.patch of Package libXi
From: Michal Srb <msrb@suse.com> Date: Sat Nov 1 20:00:57 2014 +0200 Subject: [PATCH]Refactor XGetExtensionVersion. Patch-mainline: Upstream Git-commit: 29c77457ad86966ae2204b865fb8b437269063c4 Git-repo: git://anongit.freedesktop.org/git/xorg/lib/libXi References: bnc#940529 Signed-off-by: Egbert Eich <eich@suse.com> _XiGetExtensionVersion was called from XGetExtensionVersion and from _XiCheckExtInit. When called from _XiCheckExtInit, nothing accounted for the fact that it can return ((XExtensionVersion *) NoSuchExtension) in case of error. Also it recursively calls _XiCheckExtInit potentionally causing multiple unlocks if _XiCheckExtInit fails. -> Remove it and call directly _XiGetExtensionVersionRequest and only call _XiCheckExtInit only from XGetExtensionVersion. Signed-off-by: Michal Srb <msrb@suse.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> --- src/XExtInt.c | 2 +- src/XGetVers.c | 28 +++++++++++----------------- src/XIint.h | 1 - 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/XExtInt.c b/src/XExtInt.c index d3c6b7c..672d69a 100644 --- a/src/XExtInt.c +++ b/src/XExtInt.c @@ -380,7 +380,7 @@ _XiCheckExtInit( return (-1); } ((XInputData *) info->data)->vers = - _XiGetExtensionVersion(dpy, "XInputExtension", info); + _XiGetExtensionVersionRequest(dpy, "XInputExtension", info->codes->major_opcode); } if (_XiCheckVersion(info, version_index) < 0) { diff --git a/src/XGetVers.c b/src/XGetVers.c index 0751b98..f7e22e6 100644 --- a/src/XGetVers.c +++ b/src/XGetVers.c @@ -68,12 +68,16 @@ XGetExtensionVersion(register Display * dpy, _Xconst char *name) XExtDisplayInfo *info = XInput_find_display(dpy); LockDisplay(dpy); - ext = _XiGetExtensionVersion(dpy, name, info); - if (ext != (XExtensionVersion *) NoSuchExtension) { - UnlockDisplay(dpy); - SyncHandle(); - } - return (ext); + + if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) + return NULL; + + ext = _XiGetExtensionVersionRequest(dpy, name, info->codes->major_opcode); + + UnlockDisplay(dpy); + SyncHandle(); + + return ext; } _X_HIDDEN XExtensionVersion* @@ -91,7 +95,7 @@ _XiGetExtensionVersionRequest(Display *dpy, _Xconst char *name, int xi_opcode) _XSend(dpy, name, (long)req->nbytes); if (!_XReply(dpy, (xReply *) & rep, 0, xTrue)) { - return (XExtensionVersion *) NULL; + return NULL; } ext = (XExtensionVersion *) Xmalloc(sizeof(XExtensionVersion)); @@ -105,13 +109,3 @@ _XiGetExtensionVersionRequest(Display *dpy, _Xconst char *name, int xi_opcode) return ext; } - -_X_HIDDEN XExtensionVersion * -_XiGetExtensionVersion(register Display * dpy, _Xconst char *name, - XExtDisplayInfo *info) -{ - if (_XiCheckExtInit(dpy, Dont_Check, info) == -1) - return ((XExtensionVersion *) NoSuchExtension); - - return _XiGetExtensionVersionRequest(dpy, name, info->codes->major_opcode); -} diff --git a/src/XIint.h b/src/XIint.h index 99f3652..9479a79 100644 --- a/src/XIint.h +++ b/src/XIint.h @@ -29,7 +29,6 @@ extern XExtDisplayInfo *XInput_find_display(Display *); extern int _XiCheckExtInit(Display *, int, XExtDisplayInfo *); extern int _XiCheckVersion(XExtDisplayInfo *info, int version_index); -extern XExtensionVersion *_XiGetExtensionVersion(Display *, _Xconst char *, XExtDisplayInfo *); extern XExtensionVersion* _XiGetExtensionVersionRequest(Display *dpy, _Xconst char *name, int xi_opcode); extern Status _xiQueryVersion(Display *dpy, int*, int*, XExtDisplayInfo *);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor