Don't shortcut the info syscall for drmBOBusy on nonshareable objects.
authorEric Anholt <eric@anholt.net>
Tue, 4 Mar 2008 20:16:51 +0000 (12:16 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 4 Mar 2008 20:16:51 +0000 (12:16 -0800)
This broke the results when you're trying to check if a buffer you dispatched
some time ago is done being rendered from.

libdrm/xf86drm.c

index e3550de..fb8f1c6 100644 (file)
@@ -2799,23 +2799,18 @@ int drmBOWaitIdle(int fd, drmBO *buf, unsigned hint)
     }
     return 0;
 }
-       
+
 int drmBOBusy(int fd, drmBO *buf, int *busy)
 {
-    if (!(buf->flags & DRM_BO_FLAG_SHAREABLE) &&
-       !(buf->replyFlags & DRM_BO_REP_BUSY)) {
-       *busy = 0;
-       return 0;
-    }
-    else {
-       int ret = drmBOInfo(fd, buf);
-       if (ret)
-           return ret;
-       *busy = (buf->replyFlags & DRM_BO_REP_BUSY);
-       return 0;
-    }
+    int ret = drmBOInfo(fd, buf);
+
+    if (ret)
+       return ret;
+
+    *busy = (buf->replyFlags & DRM_BO_REP_BUSY);
+    return 0;
 }
-    
+
 int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize,
              unsigned memType)
 {