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 [[email protected]] on behalf of Belal, 
Awais
Sent: Thursday, October 08, 2015 2:00 PM
To: [email protected]
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 <[email protected]>
---
  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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to