summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Jones <jajones@nvidia.com>2010-06-25 16:23:05 -0700
committerJames Jones <jajones@nvidia.com>2010-12-03 16:49:23 -0800
commit4c2d0c0c09b249e61313830ee4e237b7f0619b87 (patch)
tree6786c8a42f4f20bd6be661bff050e615cd8f6afe
parent9e33a842c97d676afa21e4bb16fd3dd380b42f4f (diff)
Add XSyncAwaitFence()
Add the XSynceFence version of XSyncAwait(). Waits for fence objects to reach the triggered state. 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.c21
2 files changed, 27 insertions, 0 deletions
diff --git a/include/X11/extensions/sync.h b/include/X11/extensions/sync.h
index 6a44ab9..a00d9c5 100644
--- a/include/X11/extensions/sync.h
+++ b/include/X11/extensions/sync.h
@@ -362,6 +362,12 @@ extern Bool XSyncQueryFence(
Bool* /*triggered*/
);
+extern Bool XSyncAwaitFence(
+ Display* /*dpy*/,
+ const XSyncFence* /*fence_list*/,
+ int /*n_fences*/
+);
+
_XFUNCPROTOEND
#endif /* _SYNC_SERVER */
diff --git a/src/XSync.c b/src/XSync.c
index ca9a67c..2bdecfc 100644
--- a/src/XSync.c
+++ b/src/XSync.c
@@ -874,6 +874,27 @@ XSyncQueryFence(Display *dpy, XSyncFence fence, Bool *triggered)
return True;
}
+Bool
+XSyncAwaitFence(Display *dpy, const XSyncFence *fence_list, int n_fences)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xSyncAwaitFenceReq *req;
+
+ SyncCheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(SyncAwaitFence, req);
+ req->reqType = info->codes->major_opcode;
+ req->syncReqType = X_SyncAwaitFence;
+ SetReqLen(req, n_fences, n_fences);
+
+ Data32(dpy, (char *)fence_list, sizeof(CARD32) * n_fences);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
/*
* Functions corresponding to the macros for manipulating 64-bit values
*/