Allows callers to query whether or not a given fence sync object is currently triggered.
Signed-off-by: James Jones <jajo...@nvidia.com> Reviewed-by: Aaron Plattner <aplatt...@nvidia.com> --- include/X11/extensions/sync.h | 6 ++++++ 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 5b157f8..05a5a98 100644 --- a/include/X11/extensions/sync.h +++ b/include/X11/extensions/sync.h @@ -358,6 +358,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 fdc5e33..0dcacc4 100644 --- a/src/XSync.c +++ b/src/XSync.c @@ -846,6 +846,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 */ -- 1.7.1 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel