diff options
-rw-r--r-- | include/X11/extensions/Xcomposite.h | 4 | ||||
-rw-r--r-- | src/Xcomposite.c | 27 |
2 files changed, 31 insertions, 0 deletions
diff --git a/include/X11/extensions/Xcomposite.h b/include/X11/extensions/Xcomposite.h index 97cc4d6..0d121ba 100644 --- a/include/X11/extensions/Xcomposite.h +++ b/include/X11/extensions/Xcomposite.h @@ -105,6 +105,10 @@ XCompositeRedirectWindowInput (Display *dpy, Window window, Window destination); +Window +XCompositeGetDestinationWindow (Display *dpy, + Window window); + _XFUNCPROTOEND #endif /* _XCOMPOSITE_H_ */ diff --git a/src/Xcomposite.c b/src/Xcomposite.c index d3bf92c..e82e1e3 100644 --- a/src/Xcomposite.c +++ b/src/Xcomposite.c @@ -485,3 +485,30 @@ XCompositeRedirectWindowInput (Display *dpy, UnlockDisplay (dpy); SyncHandle (); } + +Window +XCompositeGetDestinationWindow (Display *dpy, + Window window) +{ + XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); + xCompositeGetInputRedirectionInfoReq *req; + xCompositeGetInputRedirectionInfoReply rep; + + XCompositeCheckExtension (dpy, info, 0); + LockDisplay (dpy); + GetReq (CompositeGetInputRedirectionInfo, req); + req->reqType = info->codes->major_opcode; + req->compositeReqType = X_CompositeGetInputRedirectionInfo; + req->window = window; + if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) + { + UnlockDisplay (dpy); + SyncHandle (); + return 0; + } + + UnlockDisplay (dpy); + SyncHandle (); + + return rep.destination; +} |