diff options
author | Keith Packard <keithp@neko.keithp.com> | 2007-07-03 14:29:11 -0700 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2007-07-03 14:29:11 -0700 |
commit | 866f092ca0160a366add01b48ad03438926c4d16 (patch) | |
tree | 1d1068507044b4b2b7fdd8bb7d4100c0cb7b4cb0 /include/windowstr.h | |
parent | 2a75c774975b50dd4e71b7dbea7bd65ca2984a43 (diff) |
Make Composite manual redirect windows not clip their parent.
This patch changes the semantics of manual redirect windows so that they no
longer affect the clip list of their parent. Doing this means the parent can
draw to the area covered by the child without using IncludeInferiors. More
importantly, this also means that the parent receives expose events when
that region is damaged by other actions.
Diffstat (limited to 'include/windowstr.h')
-rw-r--r-- | include/windowstr.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/include/windowstr.h b/include/windowstr.h index 9fd6d768c..6d874ae9e 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -94,6 +94,33 @@ typedef struct _WindowOpt { #define BackgroundPixel 2L #define BackgroundPixmap 3L +/* + * The redirectDraw field can have one of three values: + * + * RedirectDrawNone + * A normal window; painted into the same pixmap as the parent + * and clipping parent and siblings to its geometry. These + * windows get a clip list equal to the intersection of their + * geometry with the parent geometry, minus the geometry + * of overlapping None and Clipped siblings. + * RedirectDrawAutomatic + * A redirected window which clips parent and sibling drawing. + * Contents for these windows are manage inside the server. + * These windows get an internal clip list equal to their + * geometry. + * RedirectDrawManual + * A redirected window which does not clip parent and sibling + * drawing; the window must be represented within the parent + * geometry by the client performing the redirection management. + * Contents for these windows are managed outside the server. + * These windows get an internal clip list equal to their + * geometry. + */ + +#define RedirectDrawNone 0 +#define RedirectDrawAutomatic 1 +#define RedirectDrawManual 2 + typedef struct _Window { DrawableRec drawable; WindowPtr parent; /* ancestor chain */ @@ -130,7 +157,7 @@ typedef struct _Window { unsigned dontPropagate:3;/* index into DontPropagateMasks */ unsigned forcedBS:1; /* system-supplied backingStore */ #ifdef COMPOSITE - unsigned redirectDraw:1; /* rendering is redirected from here */ + unsigned redirectDraw:2; /* rendering is redirected from here */ #endif DevUnion *devPrivates; } WindowRec; |