Cygwin/X: Fix for mis-aligned icon data creates bad background masks (#4491)

fd.o bugzilla #4491

Transparent icon backgrounds appear with black stripes as mask data is incorrectly aligned.
Modified the icon DDB bitmap data alignment to 16 bits

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
Joe Krahn 2008-11-02 20:17:03 +00:00 committed by Jon TURNEY
parent 91f73b79b7
commit bf65523ab0

View File

@ -83,8 +83,8 @@ winScaleXBitmapToWindows (int iconSize,
if (pixmap->drawable.depth == 15)
effXDepth = 16;
/* Need 32-bit aligned rows */
stride = ((iconSize * effBPP + 31) & (~31)) / 8;
/* Need 16-bit aligned rows for DDBitmaps */
stride = ((iconSize * effBPP + 15) & (~15)) / 8;
xStride = PixmapBytePad (pixmap->drawable.width, pixmap->drawable.depth);
if (stride == 0 || xStride == 0)
{
@ -296,11 +296,11 @@ winXIconToHICON (WindowPtr pWin, int iconSize)
else
effBPP = bpp;
/* Need 32-bit aligned rows */
stride = ((iconSize * effBPP + 31) & (~31)) / 8;
/* Need 16-bit aligned rows for DDBitmaps */
stride = ((iconSize * effBPP + 15) & (~15)) / 8;
/* Mask is 1-bit deep */
maskStride = ((iconSize * 1 + 31) & (~31)) / 8;
maskStride = ((iconSize * 1 + 15) & (~15)) / 8;
image = malloc (stride * iconSize);
imageMask = malloc (stride * iconSize);