When calling
DMXGetWindowAttributes(), window specifies the window ID of a window on the
Xdmx(1) server and
available_count specifies the length of
attr.The number of screens for which information is available will be returned in screen_count and information about those screen will be returned in attr. If screen_count is less than available_count, then information for all of the screens will be returned. Otherwise, information for the first available_count screens will be returned.
The
DMXWindowAttributes structure is:
typedef struct {
int screen;
Window window;
XRectangle pos, vis;
} DMXWindowAttributes;
For each back-end X server that displays a portion of window, this structure contains the physical screen containing that portion, the window ID on the back-end X server of the window containing that portion, the position and dimensions of the window on the back-end (pos, in screen coordinates), and the visible area of the window on the back-end (vis, in window-relative coordinates -- all zeros if the window is not visible on the backend).
To obtain more information about the physical screen use the DMXGetScreenAttributes(3X) call.
Note that DMX allows multiple back-end windows to overlap in their view of the DMX logical window. Further, a logical window does not have to be completely covered by back-end windows -- there may be gaps.
As an example, consider a 500x500 window that spans the top two 1024x768 back-end displays (A and B) of a 2048x1536 DMX display composed of 4 1024x768 back-end displays arranged in a cube:
A B
C D
In this case, the DMXGetWindowAttributes call would return the following information for the 500x500 window:
display A: 500x500 window at 1024-250,0 (relative to back end)
with 250x500 visible at 0,0 (relative to window origin)
display B: 500x500 window at -250,0 (relative to back end)
with 250x500 visible at 250,0 (relative to window origin)
display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
display D: 500x500 window at -250,-768 with 0x0 visible at 0,0