Hello, I am trying to read the content of a portion of a window with the function XGetImage:
XImage <http://tronche.com/gui/x/xlib/graphics/images.html#XImage> *XGetImage(*display*, *d*, *x*, *y*, *width*, *height*, *plane_mask*, *format*) Display <http://tronche.com/gui/x/xlib/display/opening.html#Display> **display*; Drawable *d*; int *x*, *y*; unsigned int *width*, *height*; unsigned long *plane_mask*; int *format*; so from an already mapped window called desktopWin I successfully obtain an image with the code: anImage = XGetImage(dpy, desktopWin, 0, 0, 200, 200, AllPlanes, ZPixmap); but when I read the pixels in anImage->Data, if there is a window that overlaps the region that I read (0, 0, 200, 200), the content of that window is returned in "anImage" instead of the original content of the window. I have tried to set the backing store attribute of the window desktopWin to "Always" in order to see if that could help, in fact: ---------------------------------------- 3.2.4 Backing Store Attribute Some implementations of the X server may choose to maintain the contents of *InputOutput<http://tronche.com/gui/x/xlib/window/create.html#InputClass> * windows. If the X server maintains the contents of a window, the off-screen saved pixels are known as backing store. The backing store advises the X server on what to do with the contents of a window. The backing-store attribute can be set to *NotUseful* (default), *WhenMapped*, or *Always*. A backing-store attribute of *NotUseful* advises the X server that maintaining contents is unnecessary, although some X implementations may still choose to maintain contents and, therefore, not generate *Expose<http://tronche.com/gui/x/xlib/events/exposure/expose.html> * events. A backing-store attribute of *WhenMapped* advises the X server that maintaining contents of obscured regions when the window is mapped would be beneficial. In this case, the server may generate an *Expose<http://tronche.com/gui/x/xlib/events/exposure/expose.html> * event when the window is created. A backing-store attribute of *Always*advises the X server that maintaining contents even when the window is unmapped would be beneficial. Even if the window is larger than its parent, this is a request to the X server to maintain complete contents, not just the region within the parent window boundaries. While the X server maintains the window's contents, *Expose<http://tronche.com/gui/x/xlib/events/exposure/expose.html> * events normally are not generated, but the X server may stop maintaining contents at any time. When the contents of obscured regions of a window are being maintained, regions obscured by noninferior windows are included in the destination of graphics requests (and source, when the window is the source). However, regions obscured by inferior windows are not included. ---------------------------------------- So I have used the code: attr.backing_store = Always; valuemask |= CWBackingStore; XChangeWindowAttributes(dpy, desktopWin, valuemask, &attr); Unfortunately it has not helped, since overlapping portions of other windows are still returned in anImage instead of the original content of the window that I want to grab. What could I do to solve this matter? Thanks in advance, -- Amos Tibaldi
_______________________________________________ xorg mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/xorg
