summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/X11/extensions/Xcomposite.h4
-rw-r--r--src/Xcomposite.c27
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;
+}