DMXGetWindowAttributes(__libmansuffix__)

NAME
DMXGetWindowAttributes - determine back-end window attributes

SYNOPSIS
#include <X11/extensions/dmxext.h>

Bool DMXGetWindowAttributes(Display *dpy,
                            Window window,
                            int *screen_count,
                            int available_count,
                            DMXWindowAttributes *attr);

DESCRIPTION
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(__libmansuffix__) 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

RETURN VALUE
DMXGetWindowAttributes() returns True unless there is a protocol error.

DMXGetWindowAttributes() can generate BadWindow and BadAlloc errors.

NOTES
Because this call transports a great deal of information over the wire, please call DMXGetScreenCount(__libmansuffix__) first, and make sure attr is sufficiently large.

On a particular back-end server, it is possible that the associated window has not yet been mapped because the XMapWindow(__libmansuffix__) call that will eventually map the window had been buffered by Xlib's normal buffering system. To avoid this race condition, please call DMXSync(__libmansuffix__) before communicating directly with the back-end X server.

SEE ALSO
DMXGetScreenCount(__libmansuffix__), DMXSync(__libmansuffix__), DMXGetScreenAttributes(__libmansuffix__), DMX(__libmansuffix__), Xdmx(1)