diff options
author | James Jones <jajones@nvidia.com> | 2010-06-25 16:19:55 -0700 |
---|---|---|
committer | James Jones <jajones@nvidia.com> | 2010-12-03 16:49:19 -0800 |
commit | 9e33a842c97d676afa21e4bb16fd3dd380b42f4f (patch) | |
tree | 781fe517c4ac6cc85dd7c03f5e97ba6ef7262516 | |
parent | 259a4c847ce2314bb6e1b050c93f58c3029eb67d (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.h | 6 | ||||
-rw-r--r-- | src/XSync.c | 29 |
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 */ |