[OE-core] [PATCH] mesa-demos: fix deadlock in sharedtex_mt

Carlos Rafael Giani dv at pseudoterminal.org
Thu Oct 8 09:57:01 UTC 2015


Since this patch got submitted, is there a link to the submission? 
Perhaps to some public bugtracker entry? Does this exist for Mesa? If 
so, add it to the Upstream-Status line.

Am 2015-10-08 um 11:22 schrieb Awais Belal:
> This patch fixes a deadlock that occurs between the main
> thread and rendering threads of the sharedtex_mt demo.
>
> Signed-off-by: Awais Belal <awais_belal at mentor.com>
> ---
>   ...10-sharedtex_mt-fix-rendering-thread-hang.patch | 43 ++++++++++++++++++++++
>   meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb     |  1 +
>   2 files changed, 44 insertions(+)
>   create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch
>
> diff --git a/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch b/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch
> new file mode 100644
> index 0000000..1aa893b
> --- /dev/null
> +++ b/meta/recipes-graphics/mesa/mesa-demos/0010-sharedtex_mt-fix-rendering-thread-hang.patch
> @@ -0,0 +1,43 @@
> +From 525fa9ded72d22b53c5eb366f61e2ac1d407a2db Mon Sep 17 00:00:00 2001
> +From: Awais Belal <awais_belal at mentor.com>
> +Date: Thu, 8 Oct 2015 13:49:31 +0500
> +Subject: [PATCH] sharedtex_mt: fix rendering thread hang
> +
> +XNextEvent is a blocking call which locks up the display mutex
> +this causes the rendering threads to hang when they try call
> +glXSwapBuffers() as that tries to take the same mutex in
> +underlying calls through XCopyArea().
> +So we only go to XNextEvent when it has at least one event
> +and we wouldn't lock indefinitely.
> +
> +Signed-off-by: Awais Belal <awais_belal at mentor.com>
> +
> +Upstream-Status: Submitted
> +---
> + src/xdemos/sharedtex_mt.c | 9 +++++++--
> + 1 file changed, 7 insertions(+), 2 deletions(-)
> +
> +diff --git a/src/xdemos/sharedtex_mt.c b/src/xdemos/sharedtex_mt.c
> +index a90903a..1d503c4 100644
> +--- a/src/xdemos/sharedtex_mt.c
> ++++ b/src/xdemos/sharedtex_mt.c
> +@@ -420,9 +420,14 @@ Resize(struct window *h, unsigned int width, unsigned int height)
> + static void
> + EventLoop(void)
> + {
> ++   int i;
> ++   XEvent event;
> +    while (1) {
> +-      int i;
> +-      XEvent event;
> ++      /* Do we have an event? */
> ++      if (XPending(gDpy) == 0) {
> ++         usleep(10000);
> ++         continue;
> ++      }
> +       XNextEvent(gDpy, &event);
> +       for (i = 0; i < NumWindows; i++) {
> + 	 struct window *h = &Windows[i];
> +--
> +1.9.1
> +
> diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> index e451642..0094f55 100644
> --- a/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> +++ b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> @@ -19,6 +19,7 @@ SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${BPN}-${PV}.tar.bz2 \
>       file://0007-Install-few-more-test-programs.patch \
>       file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \
>       file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \
> +    file://0010-sharedtex_mt-fix-rendering-thread-hang.patch \
>   "
>   SRC_URI[md5sum] = "72613a2c8c013716db02e3ff59d29061"
>   SRC_URI[sha256sum] = "e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92"




More information about the Openembedded-core mailing list