xserver/fb
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jeremy Huddleston Sequoia 3d20b6d253 fb: Don't widen the planemask over padding bits when ROOTLESS_SAFEALPHA is set
Wide LineDoubleDash lines drew black on screen under XQuartz while the server's own XGetImage readback showed the
correct pixels, because at depth 24 that readback ignores alpha. Opaque text and dashed arcs take the same path.

fbValidateGC widens a planemask that covers the drawable's depth to cover its full bits per pixel, so the blit and
fill paths can take their all-ones shortcuts. On a rootless server that also writes the alpha channel of the window's
premultiplied surface, which CoreGraphics then composites as black. Rootless keeps that alpha opaque by clearing the
bits from the planemask, but only its own ValidateGC does so, and mi revalidates the GC in the middle of a drawing
operation to swap the foreground for the background pixel. By then the damage layer has unwrapped the rootless funcs
down to fb, so the reassertion never happens and the rest of the operation lands with a zero alpha channel.

Fixes: https://github.com/XQuartz/XQuartz/issues/230

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2026-09-30 19:06:39 +02:00
..
fb_priv.h license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files 2026-07-29 10:02:59 +02:00
fballpriv.c fb: reexport fbGetGCPrivateKey and add itw wrapped version 2025-12-18 10:47:47 +01:00
fbarc.c fb: unexport fbGetGCPrivate() macro 2025-06-12 16:41:09 +02:00
fbbits.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbbits.h fb: parentheses around macro argument symbols 2026-06-25 06:53:59 +02:00
fbblt.c fb: Avoid potential out-of-bounds shift amounts in fbBlt 2026-08-31 15:51:17 +02:00
fbbltone.c fb: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:24:27 +02:00
fbcmap_mi.c fb: unexport fbListInstalledColormaps() 2025-06-12 16:40:12 +02:00
fbcopy.c fb: replace xallocarray() by calloc() 2025-06-12 17:21:43 +02:00
fbfill.c fb: unexport fbValidateDrawable() 2025-06-12 16:39:59 +02:00
fbfillrect.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbfillsp.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbgc.c fb: Don't widen the planemask over padding bits when ROOTLESS_SAFEALPHA is set 2026-09-30 19:06:39 +02:00
fbgetsp.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbglyph.c fb: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:24:27 +02:00
fbimage.c treewide: fix result type of BitmapBytePad() to size_t 2026-06-29 15:44:48 +02:00
fbline.c fb: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:24:27 +02:00
fboverlay.c fb: quiet -Wanalyzer-out-of-bounds warnings in fbOverlayCopyWindow() 2026-04-21 12:19:30 +02:00
fbpict.c render: move it under Xext/ 2026-06-17 14:29:57 +02:00
fbpict_priv.h license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files 2026-07-29 10:02:59 +02:00
fbpixmap.c fb: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:24:27 +02:00
fbpoint.c fb: unexport FbBitsStrideToStipStride() macro 2025-06-12 16:40:20 +02:00
fbpush.c fb: unexport FbBitsStrideToStipStride() macro 2025-06-12 16:40:20 +02:00
fbscreen.c dix: add dixAllocServerXID() 2025-06-12 17:21:48 +02:00
fbseg.c fb: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:24:27 +02:00
fbsetsp.c fb: unexport fbValidateDrawable() 2025-06-12 16:39:59 +02:00
fbsolid.c fb: parentheses around macro argument symbols 2026-06-25 06:53:59 +02:00
fbtile.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbtrap.c treewide: clean up includes of mipict.h 2026-04-30 14:51:33 +02:00
fbutil.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
fbwindow.c fb: replace DDXPoint by xPoint 2026-02-10 16:01:08 +01:00
meson.build fb: move over public SDK headers to include/ 2026-02-12 14:39:31 +01:00