Add dynamic symbol for _XGetRequest, which libX11 1.4.99.1 added.
Fixes Bugzilla #1376. --HG-- branch : SDL-1.2
This commit is contained in:
parent
563b7346c8
commit
2ba6225516
2 changed files with 30 additions and 0 deletions
|
@ -112,6 +112,21 @@ char *(*pXGetICValues)(XIC, ...) = NULL;
|
|||
#undef SDL_X11_SYM
|
||||
|
||||
|
||||
static void *SDL_XGetRequest_workaround(Display* dpy, CARD8 type, size_t len)
|
||||
{
|
||||
xReq *req;
|
||||
WORD64ALIGN
|
||||
if (dpy->bufptr + len > dpy->bufmax)
|
||||
_XFlush(dpy);
|
||||
dpy->last_req = dpy->bufptr;
|
||||
req = (xReq*)dpy->bufptr;
|
||||
req->reqType = type;
|
||||
req->length = len / 4;
|
||||
dpy->bufptr += len;
|
||||
dpy->request++;
|
||||
return req;
|
||||
}
|
||||
|
||||
static int x11_load_refcount = 0;
|
||||
|
||||
void SDL_X11_UnloadSymbols(void)
|
||||
|
@ -174,6 +189,15 @@ int SDL_X11_LoadSymbols(void)
|
|||
&SDL_X11_HAVE_UTF8);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* In case we're built with newer Xlib headers, we need to make sure
|
||||
* that _XGetRequest() is available, even on older systems.
|
||||
* Otherwise, various Xlib macros we use will call a NULL pointer.
|
||||
*/
|
||||
if (!SDL_X11_HAVE_XGETREQUEST) {
|
||||
p_XGetRequest = SDL_XGetRequest_workaround;
|
||||
}
|
||||
|
||||
if (SDL_X11_HAVE_BASEXLIB) { /* all required symbols loaded. */
|
||||
SDL_ClearError();
|
||||
} else {
|
||||
|
|
|
@ -169,6 +169,12 @@ SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,da
|
|||
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* libX11 1.4.99.1 added _XGetRequest, and macros use it behind the scenes.
|
||||
*/
|
||||
SDL_X11_MODULE(XGETREQUEST)
|
||||
SDL_X11_SYM(void *,_XGetRequest,(Display* a,CARD8 b,size_t c),(a,b,c),return)
|
||||
|
||||
/*
|
||||
* These only show up on some variants of Unix.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue