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:
parent
91f73b79b7
commit
bf65523ab0
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user