mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-02-15 08:00:34 +01:00
[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:
parent
817d4b0c9a
commit
0c5d28a4e5
1 changed files with 14 additions and 1 deletions
|
|
@ -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 *
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue