Adam Jackson <[email protected]> writes: > A paintable window is a window whose pixels are (potentially) modifiable > by rendering commands. Right now that just means the same thing as > viewable; it will soon also include unmapped windows with backing store > set to Always. > > v2: > Set paintable in dix not ddx (Keith Packard) > > Signed-off-by: Adam Jackson <[email protected]>
> ---
> dix/window.c | 5 +++++
> include/windowstr.h | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/dix/window.c b/dix/window.c
> index d43ef03..431566d 100644
> --- a/dix/window.c
> +++ b/dix/window.c
> @@ -367,6 +367,7 @@ SetWindowToDefaults(WindowPtr pWin)
> pWin->mapped = FALSE; /* off */
> pWin->realized = FALSE; /* off */
> pWin->viewable = FALSE;
> + pWin->paintable = FALSE;
> pWin->visibility = VisibilityNotViewable;
> pWin->overrideRedirect = FALSE;
> pWin->saveUnder = FALSE;
> @@ -934,6 +935,7 @@ CrushTree(WindowPtr pWin)
> FreeResource(pChild->drawable.id, RT_WINDOW);
> pSib = pChild->nextSib;
> pChild->viewable = FALSE;
> + pChild->paintable = FALSE;
> if (pChild->realized) {
> pChild->realized = FALSE;
> (*UnrealizeWindow) (pChild);
> @@ -2492,6 +2494,7 @@ RealizeTree(WindowPtr pWin)
> if (pChild->mapped) {
> pChild->realized = TRUE;
> pChild->viewable = (pChild->drawable.class == InputOutput);
> + pChild->paintable = (pChild->drawable.class == InputOutput);
> (*Realize) (pChild);
> if (pChild->firstChild) {
> pChild = pChild->firstChild;
> @@ -2589,6 +2592,7 @@ MapWindow(WindowPtr pWin, ClientPtr client)
> pWin->mapped = TRUE;
> pWin->realized = TRUE; /* for roots */
> pWin->viewable = pWin->drawable.class == InputOutput;
> + pWin->paintable = pWin->drawable.class == InputOutput;
> /* We SHOULD check for an error value here XXX */
> (*pScreen->RealizeWindow) (pWin);
> if (pScreen->ClipNotify)
> @@ -2695,6 +2699,7 @@ UnrealizeTree(WindowPtr pWin, Bool fromConfigure)
> DeleteWindowFromAnyEvents(pChild, FALSE);
> if (pChild->viewable) {
> pChild->viewable = FALSE;
> + pChild->paintable = FALSE;
> (*MarkUnrealizedWindow) (pChild, pWin, fromConfigure);
> pChild->drawable.serialNumber = NEXT_SERIAL_NUMBER;
> }
The above part is
Reviewed-by: Keith Packard <[email protected]>
> diff --git a/include/windowstr.h b/include/windowstr.h
> index 740f4a6..6443ead 100644
> --- a/include/windowstr.h
> +++ b/include/windowstr.h
> @@ -158,6 +158,7 @@ typedef struct _Window {
> unsigned mapped:1;
> unsigned realized:1; /* ancestors are all mapped */
> unsigned viewable:1; /* realized && InputOutput */
> + unsigned paintable:1;
> unsigned dontPropagate:3; /* index into DontPropagateMasks */
> unsigned forcedBS:1; /* system-supplied backingStore */
> unsigned redirectDraw:2; /* COMPOSITE rendering redirect */
My only concern here is that when ROOTLESS is defined, we're using
exactly 32 bits in the long list of bitfields (unless I've
miscounted). I assume that this will cause the struct to grow by 4
bytes?
--
[email protected]
signature.asc
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
