diff options
| author | Martin Jansa <martin.jansa@gmail.com> | 2012-02-15 19:45:38 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-02-21 17:59:39 +0000 |
| commit | b2a84e717e2893ae98f9c1cb7c982745a37c3154 (patch) | |
| tree | 123f8ff475293f3d6a69aa0277fdc634f3f8a63d | |
| parent | 888f9d59a9f6ee9ab6aadedf8ab6b0695581adfe (diff) | |
| download | poky-b2a84e717e2893ae98f9c1cb7c982745a37c3154.tar.gz | |
libsdl: add fix for new _XGetRequest symbol backported to libx11
(From OE-Core rev: d2c96e22de19a649ff7121e5ea0f95797abba93a)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch | 70 | ||||
| -rw-r--r-- | meta/recipes-graphics/libsdl/libsdl_1.2.14.bb | 3 |
2 files changed, 72 insertions, 1 deletions
diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch new file mode 100644 index 0000000000..7bab177749 --- /dev/null +++ b/meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | _XGetRequest API was backported to libx11-1.4.4 in: | ||
| 2 | http://git.openembedded.org/openembedded-core/commit/?id=e08604800fe1cb8f240f53c147ceb4ee08a29b91 | ||
| 3 | |||
| 4 | This breaks e.g. libsdl-image build with: | ||
| 5 | | /OE/shr-core/tmp-eglibc/sysroots/qemux86-64/usr/lib/libSDL.so: undefined reference to `_XGetRequest' | ||
| 6 | |||
| 7 | For details see: https://bugzilla.redhat.com/show_bug.cgi?id=782251 | ||
| 8 | |||
| 9 | Upstream-Status: Accepted | ||
| 10 | |||
| 11 | @@ -, +, @@ | ||
| 12 | added. | ||
| 13 | src/video/x11/SDL_x11dyn.c | 24 ++++++++++++++++++++++++ | ||
| 14 | src/video/x11/SDL_x11sym.h | 6 ++++++ | ||
| 15 | 2 files changed, 30 insertions(+), 0 deletions(-) | ||
| 16 | --- a/src/video/x11/SDL_x11dyn.c | ||
| 17 | +++ a/src/video/x11/SDL_x11dyn.c | ||
| 18 | @@ -109,6 +109,21 @@ char *(*pXGetICValues)(XIC, ...) = NULL; | ||
| 19 | #undef SDL_X11_SYM | ||
| 20 | |||
| 21 | |||
| 22 | +static void *SDL_XGetRequest_workaround(Display* dpy, CARD8 type, size_t len) | ||
| 23 | +{ | ||
| 24 | + xReq *req; | ||
| 25 | + WORD64ALIGN | ||
| 26 | + if (dpy->bufptr + len > dpy->bufmax) | ||
| 27 | + _XFlush(dpy); | ||
| 28 | + dpy->last_req = dpy->bufptr; | ||
| 29 | + req = (xReq*)dpy->bufptr; | ||
| 30 | + req->reqType = type; | ||
| 31 | + req->length = len / 4; | ||
| 32 | + dpy->bufptr += len; | ||
| 33 | + dpy->request++; | ||
| 34 | + return req; | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | static int x11_load_refcount = 0; | ||
| 38 | |||
| 39 | void SDL_X11_UnloadSymbols(void) | ||
| 40 | @@ -168,6 +183,15 @@ int SDL_X11_LoadSymbols(void) | ||
| 41 | X11_GetSym("XGetICValues",&SDL_X11_HAVE_UTF8,(void **)&pXGetICValues); | ||
| 42 | #endif | ||
| 43 | |||
| 44 | + /* | ||
| 45 | + * In case we're built with newer Xlib headers, we need to make sure | ||
| 46 | + * that _XGetRequest() is available, even on older systems. | ||
| 47 | + * Otherwise, various Xlib macros we use will call a NULL pointer. | ||
| 48 | + */ | ||
| 49 | + if (!SDL_X11_HAVE_XGETREQUEST) { | ||
| 50 | + p_XGetRequest = SDL_XGetRequest_workaround; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | if (SDL_X11_HAVE_BASEXLIB) { /* all required symbols loaded. */ | ||
| 54 | SDL_ClearError(); | ||
| 55 | } else { | ||
| 56 | --- a/src/video/x11/SDL_x11sym.h | ||
| 57 | +++ a/src/video/x11/SDL_x11sym.h | ||
| 58 | @@ -170,6 +170,12 @@ SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data, | ||
| 59 | #endif | ||
| 60 | |||
| 61 | /* | ||
| 62 | + * libX11 1.4.99.1 added _XGetRequest, and macros use it behind the scenes. | ||
| 63 | + */ | ||
| 64 | +SDL_X11_MODULE(XGETREQUEST) | ||
| 65 | +SDL_X11_SYM(void *,_XGetRequest,(Display* a,CARD8 b,size_t c),(a,b,c),return) | ||
| 66 | + | ||
| 67 | +/* | ||
| 68 | * These only show up on some variants of Unix. | ||
| 69 | */ | ||
| 70 | #if defined(__osf__) | ||
diff --git a/meta/recipes-graphics/libsdl/libsdl_1.2.14.bb b/meta/recipes-graphics/libsdl/libsdl_1.2.14.bb index f587291b52..5b87f39647 100644 --- a/meta/recipes-graphics/libsdl/libsdl_1.2.14.bb +++ b/meta/recipes-graphics/libsdl/libsdl_1.2.14.bb | |||
| @@ -15,10 +15,11 @@ PROVIDES = "virtual/libsdl" | |||
| 15 | DEPENDS = "${@base_contains('DISTRO_FEATURES', 'opengl', 'virtual/libgl', '', d)} virtual/libx11 libxext libxrandr libxrender tslib" | 15 | DEPENDS = "${@base_contains('DISTRO_FEATURES', 'opengl', 'virtual/libgl', '', d)} virtual/libx11 libxext libxrandr libxrender tslib" |
| 16 | DEPENDS_virtclass-nativesdk = "libx11-nativesdk libxrandr-nativesdk libxrender-nativesdk libxext-nativesdk" | 16 | DEPENDS_virtclass-nativesdk = "libx11-nativesdk libxrandr-nativesdk libxrender-nativesdk libxext-nativesdk" |
| 17 | 17 | ||
| 18 | PR = "r4" | 18 | PR = "r5" |
| 19 | 19 | ||
| 20 | SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \ | 20 | SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \ |
| 21 | file://configure_tweak.patch \ | 21 | file://configure_tweak.patch \ |
| 22 | file://add.XGetRequest.symbol.patch \ | ||
| 22 | " | 23 | " |
| 23 | 24 | ||
| 24 | S = "${WORKDIR}/SDL-${PV}" | 25 | S = "${WORKDIR}/SDL-${PV}" |
