Fixed the case that vaXXXX pass a corrupted vaDisplay point
authorAustin Yuan <shengquan.yuan@intel.com>
Wed, 11 Feb 2009 08:39:35 +0000 (03:39 -0500)
committerAustin Yuan <shengquan.yuan@intel.com>
Wed, 11 Feb 2009 08:39:35 +0000 (03:39 -0500)
Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
src/X11/va_x11.c
src/va.c

index 7bad12b..61ef2bf 100644 (file)
@@ -154,6 +154,28 @@ static VAStatus va_DisplayContextGetDriverName (
     return vaStatus;
 }
 
+int vaDisplayIsValid(VADisplay dpy)
+{
+  VADisplayContextP tmp=NULL;
+  VADisplayContextP pDisplayContext = pDisplayContexts;
+
+  while (pDisplayContext)
+  {
+      if (pDisplayContext == (VADisplayContextP)dpy)
+      {
+          tmp = (VADisplay)pDisplayContext;
+          break;
+      }
+      pDisplayContext = pDisplayContext->pNext;
+  }
+
+  if (!tmp)
+      return 0;
+  
+  return tmp->vaIsValid(pDisplayContext);
+}
+
+
 VADisplay vaGetDisplay (
     Display *native_dpy
 )
index 3e8a799..a38248e 100644 (file)
--- a/src/va.c
+++ b/src/va.c
 
 static int va_debug_trace = 0;
 
-static int vaDisplayIsValid(VADisplay dpy)
-{
-  VADisplayContextP pDisplayContext = (VADisplayContextP)dpy;
-  return pDisplayContext && pDisplayContext->vaIsValid(pDisplayContext);
-}
+int vaDisplayIsValid(VADisplay dpy);
 
 static void va_errorMessage(const char *msg, ...)
 {