summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Jones <jajones@nvidia.com>2010-06-25 16:19:55 -0700
committerJames Jones <jajones@nvidia.com>2010-12-03 16:49:19 -0800
commit9e33a842c97d676afa21e4bb16fd3dd380b42f4f (patch)
tree781fe517c4ac6cc85dd7c03f5e97ba6ef7262516
parent259a4c847ce2314bb6e1b050c93f58c3029eb67d (diff)
Add XSyncQueryFence()
Allows callers to query whether or not a given fence sync object is currently triggered. Signed-off-by: James Jones <jajones@nvidia.com> Reviewed-by: Aaron Plattner <aplattner@nvidia.com> Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--include/X11/extensions/sync.h6
-rw-r--r--src/XSync.c29
2 files changed, 35 insertions, 0 deletions
diff --git a/include/X11/extensions/sync.h b/include/X11/extensions/sync.h
index 7f4b5c5..6a44ab9 100644
--- a/include/X11/extensions/sync.h
+++ b/include/X11/extensions/sync.h
@@ -356,6 +356,12 @@ extern Bool XSyncDestroyFence(
XSyncFence /*fence*/
);
+extern Bool XSyncQueryFence(
+ Display* /*dpy*/,
+ XSyncFence /*fence*/,
+ Bool* /*triggered*/
+);
+
_XFUNCPROTOEND
#endif /* _SYNC_SERVER */
diff --git a/src/XSync.c b/src/XSync.c
index 5236b40..ca9a67c 100644
--- a/src/XSync.c
+++ b/src/XSync.c
@@ -845,6 +845,35 @@ XSyncDestroyFence(Display *dpy, XSyncFence fence)
return True;
}
+Bool
+XSyncQueryFence(Display *dpy, XSyncFence fence, Bool *triggered)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xSyncQueryFenceReply rep;
+ xSyncQueryFenceReq *req;
+
+ SyncCheckExtension(dpy, info, None);
+
+ LockDisplay(dpy);
+ GetReq(SyncQueryFence, req);
+ req->reqType = info->codes->major_opcode;
+ req->syncReqType = X_SyncQueryFence;
+ req->fid = fence;
+
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse))
+ {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+ if (triggered)
+ *triggered = rep.triggered;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
/*
* Functions corresponding to the macros for manipulating 64-bit values
*/