From: Saul Wold <sgw@linux.intel.com>
To: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Cc: Martin Jansa <martin.jansa@gmail.com>
Subject: Re: [PATCHv2] libsdl: add fix for new _XGetRequest symbol backported to libx11
Date: Tue, 21 Feb 2012 10:49:56 -0800 [thread overview]
Message-ID: <4F43E754.6070109@linux.intel.com> (raw)
In-Reply-To: <1329331538-20223-1-git-send-email-Martin.Jansa@gmail.com>
On 02/15/2012 10:45 AM, Martin Jansa wrote:
> Signed-off-by: Martin Jansa<Martin.Jansa@gmail.com>
> ---
> .../libsdl-1.2.14/add.XGetRequest.symbol.patch | 70 ++++++++++++++++++++
> meta/recipes-graphics/libsdl/libsdl_1.2.14.bb | 3 +-
> 2 files changed, 72 insertions(+), 1 deletions(-)
> create mode 100644 meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch
>
> 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 0000000..7bab177
> --- /dev/null
> +++ b/meta/recipes-graphics/libsdl/libsdl-1.2.14/add.XGetRequest.symbol.patch
> @@ -0,0 +1,70 @@
> +_XGetRequest API was backported to libx11-1.4.4 in:
> +http://git.openembedded.org/openembedded-core/commit/?id=e08604800fe1cb8f240f53c147ceb4ee08a29b91
> +
> +This breaks e.g. libsdl-image build with:
> +| /OE/shr-core/tmp-eglibc/sysroots/qemux86-64/usr/lib/libSDL.so: undefined reference to `_XGetRequest'
> +
> +For details see: https://bugzilla.redhat.com/show_bug.cgi?id=782251
> +
> +Upstream-Status: Accepted
> +
> +@@ -, +, @@
> + added.
> + src/video/x11/SDL_x11dyn.c | 24 ++++++++++++++++++++++++
> + src/video/x11/SDL_x11sym.h | 6 ++++++
> + 2 files changed, 30 insertions(+), 0 deletions(-)
> +--- a/src/video/x11/SDL_x11dyn.c
> ++++ a/src/video/x11/SDL_x11dyn.c
> +@@ -109,6 +109,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)
> +@@ -168,6 +183,15 @@ int SDL_X11_LoadSymbols(void)
> + X11_GetSym("XGetICValues",&SDL_X11_HAVE_UTF8,(void **)&pXGetICValues);
> + #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 {
> +--- a/src/video/x11/SDL_x11sym.h
> ++++ a/src/video/x11/SDL_x11sym.h
> +@@ -170,6 +170,12 @@ SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,
> + #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.
> + */
> + #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 f587291..5b87f39 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"
> DEPENDS = "${@base_contains('DISTRO_FEATURES', 'opengl', 'virtual/libgl', '', d)} virtual/libx11 libxext libxrandr libxrender tslib"
> DEPENDS_virtclass-nativesdk = "libx11-nativesdk libxrandr-nativesdk libxrender-nativesdk libxext-nativesdk"
>
> -PR = "r4"
> +PR = "r5"
>
> SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
> file://configure_tweak.patch \
> + file://add.XGetRequest.symbol.patch \
> "
>
> S = "${WORKDIR}/SDL-${PV}"
Merged into OE-core
Thanks
Sau!
prev parent reply other threads:[~2012-02-21 18:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-15 17:40 [PATCH] libsdl: add fix for new _XGetRequest symbol backported to libx11 Martin Jansa
2012-02-15 18:12 ` Otavio Salvador
2012-02-15 18:45 ` [PATCHv2] " Martin Jansa
2012-02-21 18:49 ` Saul Wold [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F43E754.6070109@linux.intel.com \
--to=sgw@linux.intel.com \
--cc=martin.jansa@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.