From 25040889c144b9ce7779bdbd7da03e4bbfee58f8 Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Mon, 16 May 2011 08:48:01 +0800 Subject: test/putsurface/putsurface: fix multi-thread issue on X11 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 --- test/putsurface/putsurface_common.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/putsurface/putsurface_common.c b/test/putsurface/putsurface_common.c index 1bf4e1e..54404fc 100644 --- a/test/putsurface/putsurface_common.c +++ b/test/putsurface/putsurface_common.c @@ -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"); -- cgit v1.2.3