On 10/12/2015 05:25 AM, Belal, Awais wrote:
Hi,

Is there are a reservation against the below patch?

Looks OK, but one comment below.


BR,
Awais

________________________________________
From: mesa-dev [mesa-dev-boun...@lists.freedesktop.org] on behalf of Belal, 
Awais
Sent: Thursday, October 08, 2015 2:00 PM
To: mesa-dev@lists.freedesktop.org
Subject: [Mesa-dev] [mesa-dev,  mesa-demos][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_be...@mentor.com>
---
  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];

Was there particular reason to move the i, event declarations?

In any case, I'll commit this in a bit.

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to