[xlib] Create source xrender Picture with IncludeInferiors

When an xlib surface is used as the source of a draw operation this
will cause the contents of child windows to be included in the source
data.  The semantics of drawing to xlib surfaces are unchanged (ie:
draws are still clipped by child windows overlapping the destination
window).
This commit is contained in:
Ryan Lortie 2007-06-13 18:59:22 -04:00 committed by Behdad Esfahbod
parent 817d4b0c9a
commit 0c5d28a4e5

View file

@ -683,10 +683,18 @@ static void
_cairo_xlib_surface_ensure_src_picture (cairo_xlib_surface_t *surface)
{
if (!surface->src_picture)
{
XRenderPictureAttributes pa;
int mask = 0;
pa.subwindow_mode = IncludeInferiors;
mask |= CPSubwindowMode;
surface->src_picture = XRenderCreatePicture (surface->dpy,
surface->drawable,
surface->xrender_format,
0, NULL);
mask, &pa);
}
}
static void
@ -2074,6 +2082,11 @@ _cairo_xlib_screen_from_visual (Display *dpy, Visual *visual)
* cairo_xlib_surface_set_size must be called whenever the size of the
* window changes.
*
* When @drawable is a Window containing child windows then drawing to
* the created surface will be clipped by those child windows. When
* the created surface is used as a source, the contents of the
* children will be included.
*
* Return value: the newly created surface
**/
cairo_surface_t *