[PATCH xserver] fb: Check whether the window is enabled directly

Adam Jackson ajax at redhat.com
Tue Sep 12 21:10:08 UTC 2017


... instead of its root window. Xwayland's rootless mode empties the
root window border clip since its root window has no storage, but
redirected windows (the only kind it can show) will have a non-empty
border clip anyway, cf. the #ifdef COMPOSITE in miComputeClips. With
this change, non-glamor Xwayland's GetImage actually works.

Other acceleration layers may need to change to account for this, but
this appears to be safe for the existing open source drivers. Only the
xfree86 DDX has any problem with losing its framebuffer on VT switch,
and even then only for UMS drivers (which excludes glamor, uxa, and sna
from consideration). This leaves exa, which already contains code to
evict pixmaps to host memory on VT switch. Since the xfree86 core will
still empty the root clip on VT switch, while the root window itself may
not contain a valid image we won't try to touch it, but GetImage from a
redirected window will now work even when switched away.

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 fb/fb.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fb/fb.h b/fb/fb.h
index 7d1e443ddd..8ab050d0f8 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -494,7 +494,7 @@ typedef struct {
  */
 
 #define fbWindowEnabled(pWin) \
-    RegionNotEmpty(&(pWin)->drawable.pScreen->root->borderClip)
+    RegionNotEmpty(&(pWin)->borderClip)
 
 #define fbDrawableEnabled(pDrawable) \
     ((pDrawable)->type == DRAWABLE_PIXMAP ? \
-- 
2.13.5



More information about the xorg-devel mailing list