[Xquartz-changes] xserver: Branch 'server-1.14-apple' - 6 commits
Jeremy Huddleston
jeremyhu at freedesktop.org
Tue Dec 18 01:38:19 PST 2012
Rebased ref, commits from common ancestor:
commit 1bba2814b1aa8622a0dfb7679e02b43988bb7e94
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date: Tue Dec 18 01:03:38 2012 -0800
fb: Revert fb changes that broke XQuartz
http://bugs.freedesktop.org/show_bug.cgi?id=26124
Revert "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
diff --git a/configure.ac b/configure.ac
index 38ac240..dcc81dc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -811,7 +811,7 @@ LIBPCIACCESS="pciaccess >= 0.12.901"
LIBUDEV="libudev >= 143"
LIBSELINUX="libselinux >= 2.0.86"
LIBDBUS="dbus-1 >= 1.0"
-LIBPIXMAN="pixman-1 >= 0.27.2"
+LIBPIXMAN="pixman-1 >= 0.21.8"
dnl Pixman is always required, but we separate it out so we can link
dnl specific modules against it
diff --git a/fb/fb.h b/fb/fb.h
index 895b148..cc5759c 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1344,9 +1344,6 @@ extern _X_EXPORT void
extern _X_EXPORT Bool
fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
-extern _X_EXPORT void
-fbDestroyGlyphCache(void);
-
/*
* fbpixmap.c
*/
diff --git a/fb/fbpict.c b/fb/fbpict.c
index 80c2a91..dc0ca3c 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -65,156 +65,6 @@ fbComposite(CARD8 op,
free_pixman_pict(pDst, dest);
}
-static pixman_glyph_cache_t *glyphCache;
-
-void
-fbDestroyGlyphCache(void)
-{
- if (glyphCache)
- {
- pixman_glyph_cache_destroy (glyphCache);
- glyphCache = NULL;
- }
-}
-
-static void
-fbUnrealizeGlyph(ScreenPtr pScreen,
- GlyphPtr pGlyph)
-{
- if (glyphCache)
- pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
-}
-
-static void
-fbGlyphs(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc, int nlist,
- GlyphListPtr list,
- GlyphPtr *glyphs)
-{
-#define N_STACK_GLYPHS 512
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
- pixman_glyph_t *pglyphs = stack_glyphs;
- pixman_image_t *srcImage, *dstImage;
- int srcXoff, srcYoff, dstXoff, dstYoff;
- GlyphPtr glyph;
- int n_glyphs;
- int x, y;
- int i, n;
- int xDst = list->xOff, yDst = list->yOff;
-
- miCompositeSourceValidate(pSrc);
-
- n_glyphs = 0;
- for (i = 0; i < nlist; ++i)
- n_glyphs += list[i].len;
-
- if (!glyphCache)
- glyphCache = pixman_glyph_cache_create();
-
- pixman_glyph_cache_freeze (glyphCache);
-
- if (n_glyphs > N_STACK_GLYPHS) {
- if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
- goto out;
- }
-
- i = 0;
- x = y = 0;
- while (nlist--) {
- x += list->xOff;
- y += list->yOff;
- n = list->len;
- while (n--) {
- const void *g;
-
- glyph = *glyphs++;
-
- if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
- pixman_image_t *glyphImage;
- PicturePtr pPicture;
- int xoff, yoff;
-
- pPicture = GetGlyphPicture(glyph, pScreen);
- if (!pPicture) {
- n_glyphs--;
- goto next;
- }
-
- if (!(glyphImage = image_from_pict(pPicture, FALSE, &xoff, &yoff)))
- goto out;
-
- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
- glyph->info.x,
- glyph->info.y,
- glyphImage);
-
- free_pixman_pict(pPicture, glyphImage);
-
- if (!g)
- goto out;
- }
-
- pglyphs[i].x = x;
- pglyphs[i].y = y;
- pglyphs[i].glyph = g;
- i++;
-
- next:
- x += glyph->info.xOff;
- y += glyph->info.yOff;
- }
- list++;
- }
-
- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
- goto out;
-
- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
- goto out_free_src;
-
- if (maskFormat) {
- pixman_format_code_t format;
- pixman_box32_t extents;
- int x, y;
-
- format = maskFormat->format | (maskFormat->depth << 24);
-
- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
-
- x = extents.x1;
- y = extents.y1;
-
- pixman_composite_glyphs(op, srcImage, dstImage, format,
- xSrc + srcXoff + xDst, ySrc + srcYoff + yDst,
- x, y,
- x + dstXoff, y + dstYoff,
- extents.x2 - extents.x1,
- extents.y2 - extents.y1,
- glyphCache, n_glyphs, pglyphs);
- }
- else {
- pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
- xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
- dstXoff, dstYoff,
- glyphCache, n_glyphs, pglyphs);
- }
-
- free_pixman_pict(pDst, dstImage);
-
-out_free_src:
- free_pixman_pict(pSrc, srcImage);
-
-out:
- pixman_glyph_cache_thaw(glyphCache);
- if (pglyphs != stack_glyphs)
- free(pglyphs);
-}
-
static pixman_image_t *
create_solid_fill_image(PicturePtr pict)
{
@@ -473,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
return FALSE;
ps = GetPictureScreen(pScreen);
ps->Composite = fbComposite;
- ps->Glyphs = fbGlyphs;
- ps->UnrealizeGlyph = fbUnrealizeGlyph;
+ ps->Glyphs = miGlyphs;
ps->CompositeRects = miCompositeRects;
ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
ps->Trapezoids = fbTrapezoids;
diff --git a/fb/fbscreen.c b/fb/fbscreen.c
index f9080a4..7c7d656 100644
--- a/fb/fbscreen.c
+++ b/fb/fbscreen.c
@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
int d;
DepthPtr depths = pScreen->allowedDepths;
- fbDestroyGlyphCache();
for (d = 0; d < pScreen->numDepths; d++)
free(depths[d].vids);
free(depths);
commit 0c91d506eb67eb61ff6f89c4f70a88a3353e4e68
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri Feb 12 19:48:52 2010 -0800
fb: Revert fb changes that broke XQuartz
http://bugs.freedesktop.org/show_bug.cgi?id=26124
Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
Revert "fb: Adjust transform or composite coordinates for pixman operations"
http://bugs.freedesktop.org/26124
This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
diff --git a/fb/fb.h b/fb/fb.h
index b869d12..895b148 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1686,8 +1686,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
RegionPtr pRegion, FbBits and, FbBits xor);
extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
- Bool has_clip,
- int *xoff, int *yoff);
+ Bool has_clip);
extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);
diff --git a/fb/fbpict.c b/fb/fbpict.c
index 2804ff4..80c2a91 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
{
pixman_image_t *src, *mask, *dest;
- int src_xoff, src_yoff;
- int msk_xoff, msk_yoff;
- int dst_xoff, dst_yoff;
-
miCompositeSourceValidate(pSrc);
if (pMask)
miCompositeSourceValidate(pMask);
- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
+ src = image_from_pict(pSrc, TRUE);
+ mask = image_from_pict(pMask, TRUE);
+ dest = image_from_pict(pDst, TRUE);
if (src && dest && !(pMask && !mask)) {
pixman_image_composite(op, src, mask, dest,
- xSrc + src_xoff, ySrc + src_yoff,
- xMask + msk_xoff, yMask + msk_yoff,
- xDst + dst_xoff, yDst + dst_yoff, width, height);
+ xSrc, ySrc, xMask, yMask, xDst, yDst,
+ width, height);
}
free_pixman_pict(pSrc, src);
@@ -293,20 +288,22 @@ create_conical_gradient_image(PictGradient * gradient)
}
static pixman_image_t *
-create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+create_bits_picture(PicturePtr pict, Bool has_clip)
{
- PixmapPtr pixmap;
FbBits *bits;
FbStride stride;
- int bpp;
+ int bpp, xoff, yoff;
pixman_image_t *image;
- fbGetDrawablePixmap(pict->pDrawable, pixmap, *xoff, *yoff);
- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
+ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
+
+ bits = (FbBits*)((CARD8*)bits +
+ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
+ (pict->pDrawable->x + xoff) * (bpp / 8));
image = pixman_image_create_bits((pixman_format_code_t) pict->format,
- pixmap->drawable.width,
- pixmap->drawable.height, (uint32_t *) bits,
+ pict->pDrawable->width,
+ pict->pDrawable->height, (uint32_t *) bits,
stride * sizeof(FbStride));
if (!image)
@@ -333,57 +330,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
if (pict->clientClipType != CT_NONE)
pixman_image_set_has_client_clip(image, TRUE);
- if (*xoff || *yoff)
- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
+ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
pixman_image_set_clip_region(image, pict->pCompositeClip);
- if (*xoff || *yoff)
- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
+ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
}
/* Indexed table */
if (pict->pFormat->index.devPrivate)
pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
- /* Add in drawable origin to position within the image */
- *xoff += pict->pDrawable->x;
- *yoff += pict->pDrawable->y;
-
return image;
}
static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
- int *xoff, int *yoff,
Bool is_alpha_map);
static void
-set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- int *xoff, int *yoff, Bool is_alpha_map)
+set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
{
pixman_repeat_t repeat;
pixman_filter_t filter;
if (pict->transform) {
- /* For source images, adjust the transform to account
- * for the drawable offset within the pixman image,
- * then set the offset to 0 as it will be used
- * to compute positions within the transformed image.
- */
- if (!has_clip) {
- struct pixman_transform adjusted;
-
- adjusted = *pict->transform;
- pixman_transform_translate(&adjusted,
- NULL,
- pixman_int_to_fixed(*xoff),
- pixman_int_to_fixed(*yoff));
- pixman_image_set_transform(image, &adjusted);
- *xoff = 0;
- *yoff = 0;
- }
- else
- pixman_image_set_transform(image, pict->transform);
+ pixman_image_set_transform(image, pict->transform);
}
switch (pict->repeatType) {
@@ -411,10 +382,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
* as the alpha map for this operation
*/
if (pict->alphaMap && !is_alpha_map) {
- int alpha_xoff, alpha_yoff;
pixman_image_t *alpha_map =
- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
- &alpha_yoff, TRUE);
+ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
pict->alphaOrigin.y);
@@ -448,8 +417,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
}
static pixman_image_t *
-image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
- Bool is_alpha_map)
+image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
{
pixman_image_t *image = NULL;
@@ -457,7 +425,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
return NULL;
if (pict->pDrawable) {
- image = create_bits_picture(pict, has_clip, xoff, yoff);
+ image = create_bits_picture(pict, has_clip);
}
else if (pict->pSourcePict) {
SourcePict *sp = pict->pSourcePict;
@@ -475,19 +443,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
else if (sp->type == SourcePictTypeConical)
image = create_conical_gradient_image(gradient);
}
- *xoff = *yoff = 0;
}
if (image)
- set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
-
+ set_image_properties (image, pict, is_alpha_map);
return image;
}
pixman_image_t *
-image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+image_from_pict (PicturePtr pict, Bool has_clip)
{
- return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
+ return image_from_pict_internal (pict, has_clip, FALSE);
}
void
diff --git a/fb/fbtrap.c b/fb/fbtrap.c
index bf82f8f..0145ce9 100644
--- a/fb/fbtrap.c
+++ b/fb/fbtrap.c
@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
{
pixman_image_t *image;
- int dst_xoff, dst_yoff;
- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
- return;
-
- pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
- ntrap, (pixman_trap_t *) traps);
+ if (!(image = image_from_pict (pPicture, FALSE)))
+ return;
+
+ pixman_add_traps(image, x_off, y_off,
+ ntrap, (pixman_trap_t *)traps);
free_pixman_pict(pPicture, image);
}
@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
xTrapezoid * trap, int x_off, int y_off)
{
pixman_image_t *image;
- int dst_xoff, dst_yoff;
- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
+ if (!(image = image_from_pict (pPicture, FALSE)))
return;
- pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
- x_off + dst_xoff, y_off + dst_yoff);
+ pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
+ x_off, y_off);
free_pixman_pict(pPicture, image);
}
@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
{
pixman_image_t *image;
- int dst_xoff, dst_yoff;
- if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
+ if (!(image = image_from_pict (pPicture, FALSE)))
return;
-
- pixman_add_triangles(image,
- dst_xoff + x_off, dst_yoff + y_off,
- ntri, (pixman_triangle_t *) tris);
+
+ pixman_add_triangles(image, x_off, y_off, ntri,
+ (pixman_triangle_t *)tris);
free_pixman_pict(pPicture, image);
}
@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
{
pixman_image_t *src, *dst;
- int src_xoff, src_yoff;
- int dst_xoff, dst_yoff;
miCompositeSourceValidate(pSrc);
- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
+ src = image_from_pict(pSrc, FALSE);
+ dst = image_from_pict(pDst, TRUE);
if (src && dst) {
pixman_format_code_t format;
@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
for (i = 0; i < nshapes; ++i) {
composite(op, src, dst, format,
- xSrc + src_xoff,
- ySrc + src_yoff,
- dst_xoff, dst_yoff, 1, shapes + i * shape_size);
+ xSrc, ySrc, 0, 0,
+ 1, shapes + i * shape_size);
}
}
else {
@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
}
composite(op, src, dst, format,
- xSrc + src_xoff,
- ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
+ xSrc, ySrc, 0, 0,
+ nshapes, shapes);
}
DamageRegionProcessPending(pDst->pDrawable);
commit a2c5933b53ff4d3bed9fc62184a575bd994e42b1
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri Apr 30 13:08:25 2010 -0700
Workaround the GC clipping problem in miPaintWindow and add some debugging output.
Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
diff --git a/mi/miexpose.c b/mi/miexpose.c
index 8b7c93f..3e972f7 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -489,7 +489,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
void RootlessStartDrawing(WindowPtr pWin);
void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
Bool IsFramedWindow(WindowPtr pWin);
-#endif
+#include "../fb/fb.h"
+#endif
void
miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
@@ -518,23 +519,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
Bool solid = TRUE;
DrawablePtr drawable = &pWin->drawable;
+#ifdef XQUARTZ_CLIP_DEBUG
+ ErrorF("START %d BS %d (pR = %ld)\n", what, pWin->backgroundState, ParentRelative);
+ ErrorF(" Rgn: %d %d %d %d\n", prgn->extents.x1, prgn->extents.y1,
+ prgn->extents.x2 - prgn->extents.x1,
+ prgn->extents.y2 - prgn->extents.y1);
+ ErrorF(" Win: %d %d (%d %d) %d %d\n", pWin->origin.x, pWin->origin.y,
+ pWin->winSize.extents.x1, pWin->winSize.extents.y1,
+ pWin->winSize.extents.x2 - pWin->winSize.extents.x1,
+ pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
+ ErrorF(" Draw: %d %d %d %d\n", pWin->drawable.x, pWin->drawable.y,
+ pWin->drawable.width, pWin->drawable.height);
+#endif
+
#ifdef ROOTLESS
if (!drawable || drawable->type == UNDRAWABLE_WINDOW)
return;
+#endif
+
+ if (what == PW_BACKGROUND)
+ {
+#ifdef ROOTLESS
+ if(IsFramedWindow(pWin)) {
+ RootlessStartDrawing(pWin);
+ RootlessDamageRegion(pWin, prgn);
- if (IsFramedWindow(pWin)) {
- RootlessStartDrawing(pWin);
- RootlessDamageRegion(pWin, prgn);
-
- if (pWin->backgroundState == ParentRelative) {
- if ((what == PW_BACKGROUND) ||
- (what == PW_BORDER && !pWin->borderIsPixel))
+ if(pWin->backgroundState == ParentRelative) {
RootlessSetPixmapOfAncestors(pWin);
+ }
}
- }
#endif
- if (what == PW_BACKGROUND) {
while (pWin->backgroundState == ParentRelative)
pWin = pWin->parent;
@@ -559,6 +574,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
else {
PixmapPtr pixmap;
+#ifdef ROOTLESS
+ if(IsFramedWindow(pWin)) {
+ RootlessStartDrawing(pWin);
+ RootlessDamageRegion(pWin, prgn);
+
+ if(!pWin->borderIsPixel &&
+ pWin->backgroundState == ParentRelative) {
+ RootlessSetPixmapOfAncestors(pWin);
+ }
+ }
+#endif
+
tile_x_off = drawable->x;
tile_y_off = drawable->y;
@@ -567,6 +594,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
return;
pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
drawable = &pixmap->drawable;
+
+#ifdef XQUARTZ_CLIP_DEBUG
+ ErrorF(" Draw: %d %d %d %d\n",
+ drawable->x, drawable->y, drawable->width, drawable->height);
+#endif
+
#ifdef COMPOSITE
draw_x_off = pixmap->screen_x;
draw_y_off = pixmap->screen_y;
@@ -629,6 +662,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
ChangeGC(NullClient, pGC, gcmask, gcval);
ValidateGC(drawable, pGC);
+#ifdef XQUARTZ_CLIP_DEBUG
+ ErrorF(" GC: %d %d %d %d\n",
+ pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
+ pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
+ pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
+#endif
+
+#ifdef XQUARTZ
+ /* Looks like our clipping isn't set right for some reason:
+ * http://xquartz.macosforge.org/trac/ticket/290
+ */
+ if(what == PW_BORDER) {
+
+#if 0
+ if(solid) {
+#if 1
+ fbFillRegionSolid(&pWin->drawable,
+ prgn,
+ 0,
+ fbReplicatePixel(fill.pixel,
+ pWin->drawable.bitsPerPixel));
+#else
+ fbFillRegionSolid(drawable,
+ prgn,
+ 0,
+ fbReplicatePixel(fill.pixel,
+ drawable->bitsPerPixel));
+#endif
+ return;
+ }
+#endif
+
+ pGC->pCompositeClip->extents.x1 += prgn->extents.x1;
+ pGC->pCompositeClip->extents.y1 += prgn->extents.y1;
+ pGC->pCompositeClip->extents.x2 += prgn->extents.x1;
+ pGC->pCompositeClip->extents.y2 += prgn->extents.y1;
+
+ if(pGC->pCompositeClip->extents.x2 > drawable->pScreen->width)
+ pGC->pCompositeClip->extents.x2 = drawable->pScreen->width;
+ if(pGC->pCompositeClip->extents.y2 > drawable->pScreen->height)
+ pGC->pCompositeClip->extents.y2 = drawable->pScreen->height;
+ }
+#endif
+
+#ifdef XQUARTZ_CLIP_DEBUG
+ ErrorF(" GC: %d %d %d %d\n",
+ pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
+ pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
+ pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
+#endif
+
numRects = RegionNumRects(prgn);
pbox = RegionRects(prgn);
for (i = numRects; --i >= 0; pbox++, prect++) {
commit 8059f9a02fda9522492f6c8ed8f81eaeb9431092
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri Jan 13 12:00:57 2012 -0800
sdksyms.sh: Use CPPFLAGS, not CFLAGS
CFLAGS can include flags which are not useful to the preprocessor
or can even cause it to fail. This fixes a build issue on darwin
when building for more than one architecture.
Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
Reviewed-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index c3899b5..4f48b85 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -38,7 +38,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
bin_PROGRAMS = Xorg
nodist_Xorg_SOURCES = sdksyms.c
-AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
+AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
INCLUDES = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
-I$(srcdir)/dri -I$(srcdir)/dri2
@@ -115,7 +115,7 @@ CLEANFILES = sdksyms.c sdksyms.dep
EXTRA_DIST += sdksyms.sh
sdksyms.dep sdksyms.c: sdksyms.sh
- $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CFLAGS) $(AM_CFLAGS) $(INCLUDES)
+ $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS) $(INCLUDES)
SDKSYMS_DEP = sdksyms.dep
include $(SDKSYMS_DEP)
commit ba4bb3bc1b87eb57cc34d2ad1f302c9d2a15c847
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date: Tue Dec 18 01:29:12 2012 -0800
XQuartz: Don't add the 15bit visual any more
Mountain Lion only supports 32bit backing stores, so don't use 15bit visuals until libXplugin adapts
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index bf51180..e0983d6 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -230,13 +230,15 @@ DarwinScreenInit(ScreenPtr pScreen, int argc, char **argv)
}
// TODO: Make PseudoColor visuals not suck in TrueColor mode
- // if(dfb->depth > 8)
- // miSetVisualTypesAndMasks(8, PseudoColorMask, 8, PseudoColor, 0, 0, 0);
- if (dfb->depth > 15)
- miSetVisualTypesAndMasks(15, TrueColorMask, 5, TrueColor,
- RM_ARGB(0, 5, 5, 5), GM_ARGB(0, 5, 5,
- 5),
- BM_ARGB(0, 5, 5, 5));
+ // if(dfb->depth > 8)
+ // miSetVisualTypesAndMasks(8, PseudoColorMask, 8, PseudoColor, 0, 0, 0);
+ //
+ // TODO: Re-add support for 15bit
+ // if (dfb->depth > 15)
+ // miSetVisualTypesAndMasks(15, TrueColorMask, 5, TrueColor,
+ // RM_ARGB(0, 5, 5, 5), GM_ARGB(0, 5, 5,
+ // 5),
+ // BM_ARGB(0, 5, 5, 5));
if (dfb->depth > 24)
miSetVisualTypesAndMasks(24, TrueColorMask, 8, TrueColor,
RM_ARGB(0, 8, 8, 8), GM_ARGB(0, 8, 8,
diff --git a/hw/xquartz/xpr/xprScreen.c b/hw/xquartz/xpr/xprScreen.c
index efe2aa8..e376019 100644
--- a/hw/xquartz/xpr/xprScreen.c
+++ b/hw/xquartz/xpr/xprScreen.c
@@ -359,6 +359,10 @@ have_depth:
dfb->blueMask = 0;
break;
+#if 0
+ // Removed because Mountain Lion removed support for
+ // 15bit backing stores. We can possibly re-add
+ // this once libXplugin is updated to work around it.
case 15:
dfb->visuals = TrueColorMask; //LARGE_VISUALS;
dfb->preferredCVC = TrueColor;
@@ -369,6 +373,7 @@ have_depth:
dfb->greenMask = GM_ARGB(0, 5, 5, 5);
dfb->blueMask = BM_ARGB(0, 5, 5, 5);
break;
+#endif
// case 24:
default:
commit c298f9c42ec05486ac88fc91a84739d7c3e3ea9e
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date: Tue Dec 18 01:28:02 2012 -0800
XQuartz: Revert some unfortunate auto-indenting mishaps with our super-nested for-loops
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index e37eefb..03486cd 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -58,40 +58,38 @@
#include "darwinfb.h"
/* Based originally on code from indirect.c which was based on code from i830_dri.c. */
-__GLXconfig *
-__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
-{
+__GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) {
int numConfigs = 0;
__GLXconfig *visualConfigs, *c;
struct glCapabilities caps;
struct glCapabilitiesConfig *conf;
int stereo, depth, aux, buffers, stencil, accum, color, msample;
- if (getGlCapabilities(&caps)) {
+ if(getGlCapabilities(&caps)) {
ErrorF("error from getGlCapabilities()!\n");
return NULL;
}
/*
- conf->stereo is 0 or 1, but we need at least 1 iteration of the loop,
- so we treat a true conf->stereo as 2.
+ conf->stereo is 0 or 1, but we need at least 1 iteration of the loop,
+ so we treat a true conf->stereo as 2.
- The depth size is 0 or 24. Thus we do 2 iterations for that.
+ The depth size is 0 or 24. Thus we do 2 iterations for that.
- conf->aux_buffers (when available/non-zero) result in 2 iterations instead of 1.
+ conf->aux_buffers (when available/non-zero) result in 2 iterations instead of 1.
- conf->buffers indicates whether we have single or double buffering.
+ conf->buffers indicates whether we have single or double buffering.
- conf->total_stencil_bit_depths
+ conf->total_stencil_bit_depths
- conf->total_color_buffers indicates the RGB/RGBA color depths.
+ conf->total_color_buffers indicates the RGB/RGBA color depths.
- conf->total_accum_buffers iterations for accum (with at least 1 if equal to 0)
+ conf->total_accum_buffers iterations for accum (with at least 1 if equal to 0)
- conf->total_depth_buffer_depths
+ conf->total_depth_buffer_depths
- conf->multisample_buffers iterations (with at least 1 if equal to 0). We add 1
- for the 0 multisampling config.
+ conf->multisample_buffers iterations (with at least 1 if equal to 0). We add 1
+ for the 0 multisampling config.
*/
@@ -99,57 +97,43 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
numConfigs = 0;
- for (conf = caps.configurations; conf; conf = conf->next) {
- if (conf->total_color_buffers <= 0)
+ for(conf = caps.configurations; conf; conf = conf->next) {
+ if(conf->total_color_buffers <= 0)
continue;
numConfigs += (conf->stereo ? 2 : 1)
- * (conf->aux_buffers ? 2 : 1)
- * conf->buffers
- * ((conf->total_stencil_bit_depths >
- 0) ? conf->total_stencil_bit_depths : 1)
- * conf->total_color_buffers
- * ((conf->total_accum_buffers >
- 0) ? conf->total_accum_buffers : 1)
- * conf->total_depth_buffer_depths
- * (conf->multisample_buffers + 1);
+ * (conf->aux_buffers ? 2 : 1)
+ * conf->buffers
+ * ((conf->total_stencil_bit_depths > 0) ? conf->total_stencil_bit_depths : 1)
+ * conf->total_color_buffers
+ * ((conf->total_accum_buffers > 0) ? conf->total_accum_buffers : 1)
+ * conf->total_depth_buffer_depths
+ * (conf->multisample_buffers + 1);
}
- if (numConfigsPtr)
+ if(numConfigsPtr)
*numConfigsPtr = numConfigs;
visualConfigs = calloc(sizeof(*visualConfigs), numConfigs);
- if (NULL == visualConfigs) {
+ if(NULL == visualConfigs) {
ErrorF("xcalloc failure when allocating visualConfigs\n");
freeGlCapabilities(&caps);
return NULL;
}
c = visualConfigs; /* current buffer */
- for (conf = caps.configurations; conf; conf = conf->next) {
- for (stereo = 0; stereo < (conf->stereo ? 2 : 1); ++stereo) {
- for (aux = 0; aux < (conf->aux_buffers ? 2 : 1); ++aux) {
- for (buffers = 0; buffers < conf->buffers; ++buffers) {
- for (stencil = 0;
- stencil < ((conf->total_stencil_bit_depths > 0) ?
- conf->
- total_stencil_bit_depths : 1);
- ++stencil) {
- for (color = 0; color < conf->total_color_buffers;
- ++color) {
- for (accum = 0;
- accum < ((conf->total_accum_buffers > 0) ?
- conf->
- total_accum_buffers : 1);
- ++accum) {
- for (depth = 0;
- depth < conf->total_depth_buffer_depths;
- ++depth) {
- for (msample = 0;
- msample <
- (conf->multisample_buffers + 1);
- ++msample) {
+ for(conf = caps.configurations; conf; conf = conf->next) {
+ for(stereo = 0; stereo < (conf->stereo ? 2 : 1); ++stereo) {
+ for(aux = 0; aux < (conf->aux_buffers ? 2 : 1); ++aux) {
+ for(buffers = 0; buffers < conf->buffers; ++buffers) {
+ for(stencil = 0; stencil < ((conf->total_stencil_bit_depths > 0) ?
+ conf->total_stencil_bit_depths : 1); ++stencil) {
+ for(color = 0; color < conf->total_color_buffers; ++color) {
+ for(accum = 0; accum < ((conf->total_accum_buffers > 0) ?
+ conf->total_accum_buffers : 1); ++accum) {
+ for(depth = 0; depth < conf->total_depth_buffer_depths; ++depth) {
+ for(msample = 0; msample < (conf->multisample_buffers + 1); ++msample) {
// Global
c->visualID = -1;
@@ -162,12 +146,10 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
c->indexBits = 0;
c->pixmapMode = 0; // TODO: What should this be?
- if (conf->accelerated) {
+ if(conf->accelerated) {
c->visualRating = GLX_NONE;
- }
- else {
- c->visualRating =
- GLX_SLOW_VISUAL_EXT;
+ } else {
+ c->visualRating = GLX_SLOW_VISUAL_EXT;
}
c->transparentPixel = GLX_NONE;
@@ -179,91 +161,52 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
c->visualSelectGroup = 0;
- c->swapMethod =
- GLX_SWAP_UNDEFINED_OML;
+ c->swapMethod = GLX_SWAP_UNDEFINED_OML;
// Stereo
c->stereoMode = stereo ? TRUE : FALSE;
// Aux buffers
- c->numAuxBuffers =
- aux ? conf->aux_buffers : 0;
+ c->numAuxBuffers = aux ? conf->aux_buffers : 0;
// Double Buffered
- c->doubleBufferMode =
- buffers ? TRUE : FALSE;
+ c->doubleBufferMode = buffers ? TRUE : FALSE;
// Stencil Buffer
- if (conf->total_stencil_bit_depths >
- 0) {
- c->stencilBits =
- conf->stencil_bit_depths[
- stencil];
- }
- else {
+ if(conf->total_stencil_bit_depths > 0) {
+ c->stencilBits = conf->stencil_bit_depths[stencil];
+ } else {
c->stencilBits = 0;
}
// Color
- if (GLCAPS_COLOR_BUF_INVALID_VALUE !=
- conf->color_buffers[color].a) {
- c->alphaBits =
- conf->color_buffers[color].a;
- }
- else {
+ if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->color_buffers[color].a) {
+ c->alphaBits = conf->color_buffers[color].a;
+ } else {
c->alphaBits = 0;
}
- c->redBits =
- conf->color_buffers[color].r;
- c->greenBits =
- conf->color_buffers[color].g;
- c->blueBits =
- conf->color_buffers[color].b;
-
- c->rgbBits = c->alphaBits +
- c->redBits +
- c->greenBits +
- c->blueBits;
-
- c->alphaMask =
- AM_ARGB(c->alphaBits, c->redBits,
- c->greenBits,
- c->blueBits);
- c->redMask =
- RM_ARGB(c->alphaBits, c->redBits,
- c->greenBits,
- c->blueBits);
- c->greenMask =
- GM_ARGB(c->alphaBits, c->redBits,
- c->greenBits,
- c->blueBits);
- c->blueMask =
- BM_ARGB(c->alphaBits, c->redBits,
- c->greenBits,
- c->blueBits);
+ c->redBits = conf->color_buffers[color].r;
+ c->greenBits = conf->color_buffers[color].g;
+ c->blueBits = conf->color_buffers[color].b;
+
+ c->rgbBits = c->alphaBits + c->redBits + c->greenBits + c->blueBits;
+
+ c->alphaMask = AM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->redMask = RM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->greenMask = GM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->blueMask = BM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
// Accumulation Buffers
- if (conf->total_accum_buffers > 0) {
- c->accumRedBits =
- conf->accum_buffers[accum].r;
- c->accumGreenBits =
- conf->accum_buffers[accum].g;
- c->accumBlueBits =
- conf->accum_buffers[accum].b;
- if (
- GLCAPS_COLOR_BUF_INVALID_VALUE
- !=
- conf->accum_buffers[accum].a)
- {
- c->accumAlphaBits =
- conf->accum_buffers[accum
- ].a;
- }
- else {
+ if(conf->total_accum_buffers > 0) {
+ c->accumRedBits = conf->accum_buffers[accum].r;
+ c->accumGreenBits = conf->accum_buffers[accum].g;
+ c->accumBlueBits = conf->accum_buffers[accum].b;
+ if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->accum_buffers[accum].a) {
+ c->accumAlphaBits = conf->accum_buffers[accum].a;
+ } else {
c->accumAlphaBits = 0;
}
- }
- else {
+ } else {
c->accumRedBits = 0;
c->accumGreenBits = 0;
c->accumBlueBits = 0;
@@ -271,17 +214,13 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
}
// Depth
- c->depthBits =
- conf->depth_buffers[depth];
+ c->depthBits = conf->depth_buffers[depth];
// MultiSample
- if (msample > 0) {
- c->samples =
- conf->multisample_samples;
- c->sampleBuffers =
- conf->multisample_buffers;
- }
- else {
+ if(msample > 0) {
+ c->samples = conf->multisample_samples;
+ c->sampleBuffers = conf->multisample_buffers;
+ } else {
c->samples = 0;
c->sampleBuffers = 0;
}
@@ -291,9 +230,7 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
* GLXPbuffers in direct mode.
*/
/* SGIX_fbconfig / GLX 1.3 */
- c->drawableType = GLX_WINDOW_BIT |
- GLX_PIXMAP_BIT |
- GLX_PBUFFER_BIT;
+ c->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
c->renderType = GLX_RGBA_BIT;
c->xRenderable = GL_TRUE;
c->fbconfigID = -1;
@@ -310,8 +247,7 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
*/
c->maxPbufferWidth = 8192;
c->maxPbufferHeight = 8192;
- c->maxPbufferPixels =
- /*Do we need this?*/ 0;
+ c->maxPbufferPixels = /*Do we need this?*/ 0;
/*
* There is no introspection for this sort of thing
* with CGL. What should we do realistically?
@@ -337,12 +273,10 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
}
}
- (c - 1)->next = NULL;
+ (c-1)->next = NULL;
if (c - visualConfigs != numConfigs) {
- FatalError(
- "numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n",
- numConfigs, (int)(c - visualConfigs));
+ FatalError("numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n", numConfigs, (int)(c - visualConfigs));
}
freeGlCapabilities(&caps);
More information about the Xquartz-changes
mailing list