[PATCH 1/8] dix: Add 'paintable' bit to the window state (v2)
Adam Jackson
ajax at redhat.com
Wed Feb 25 13:03:07 PST 2015
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)
Reviewed-by: Keith Packard <keithp at keithp.com>
Signed-off-by: Adam Jackson <ajax at redhat.com>
---
dix/window.c | 5 +++++
include/windowstr.h | 1 +
2 files changed, 6 insertions(+)
diff --git a/dix/window.c b/dix/window.c
index d49276c..545bad7 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;
}
diff --git a/include/windowstr.h b/include/windowstr.h
index 53eef37..c4aa735 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 */
--
1.9.3
More information about the xorg-devel
mailing list