test/putsurface/putsurface: fix multi-thread issue on X11
authorXiang, Haihao <haihao.xiang@intel.com>
Mon, 16 May 2011 00:48:01 +0000 (08:48 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Mon, 16 May 2011 03:56:26 +0000 (11:56 +0800)
On X11, a VA display is dependent on the display returned by XOpenDisplay,
vaPutSurface maybe accesses this display. So the same access mechanism is needed
for vaPutSurface and other Xlib funtion calls. Another way is to call XInitThreads
before XOpenDisplay.

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
test/putsurface/putsurface_common.c

index 1bf4e1e..54404fc 100644 (file)
@@ -193,12 +193,18 @@ static void* putsurface_thread(void *data)
                                     (test_clip==0)?0:2,
                                     display_field);
 #else
+        if (check_event) {
+            pthread_mutex_lock(&gmutex);
+        }
         vaStatus = vaPutSurface(va_dpy, surface_id, draw,
                                 0,0,surface_width,surface_height,
                                 0,0,width,height,
                                 (test_clip==0)?NULL:&cliprects[0],
                                 (test_clip==0)?0:2,
                                 display_field);
+        if (check_event) {
+            pthread_mutex_unlock(&gmutex);
+        }
 #endif 
 
         CHECK_VASTATUS(vaStatus,"vaPutSurface");