mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 01:21:00 +00:00
[WIN32K]: Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced.
svn path=/trunk/; revision=46117
This commit is contained in:
parent
718fb52625
commit
6cc3c9cd47
|
@ -475,27 +475,27 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
|
|||
switch (BitmapInfo->Format)
|
||||
{
|
||||
case BMF_1BPP:
|
||||
//ScanLine = ((BitmapInfo->Width + 31) & ~31) / 8;
|
||||
ScanLine = ((BitmapInfo->Width + 31) & ~31) >> 3;
|
||||
break;
|
||||
|
||||
case BMF_4BPP:
|
||||
//ScanLine = ((BitmapInfo->Width + 7) & ~7) / 2;
|
||||
ScanLine = ((BitmapInfo->Width + 7) & ~7) >> 1;
|
||||
break;
|
||||
|
||||
case BMF_8BPP:
|
||||
//ScanLine = ((BitmapInfo->Width + 3) & ~3);
|
||||
ScanLine = (BitmapInfo->Width + 3) & ~3;
|
||||
break;
|
||||
|
||||
case BMF_16BPP:
|
||||
//ScanLine = ((BitmapInfo->Width + 1) & ~1) * 2;
|
||||
ScanLine = ((BitmapInfo->Width + 1) & ~1) << 1;
|
||||
break;
|
||||
|
||||
case BMF_24BPP:
|
||||
//ScanLine = ((BitmapInfo->Width * 3) + 3) & ~3;
|
||||
ScanLine = ((BitmapInfo->Width * 3) + 3) & ~3;
|
||||
break;
|
||||
|
||||
case BMF_32BPP:
|
||||
// ScanLine = BitmapInfo->Width * 4;
|
||||
ScanLine = BitmapInfo->Width << 2;
|
||||
break;
|
||||
|
||||
case BMF_8RLE:
|
||||
|
@ -510,8 +510,6 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ScanLine = BitmapInfo->Width;
|
||||
|
||||
/* Does the device manage its own surface? */
|
||||
if (!Bits)
|
||||
{
|
||||
|
@ -604,6 +602,9 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
|
|||
/* For topdown, the base address starts with the bits */
|
||||
pso->pvScan0 = pso->pvBits;
|
||||
pso->lDelta = ScanLine;
|
||||
|
||||
/* Hack for FreeType/Font Rendering, cannot use the Aligned ScanLine */
|
||||
if (BitmapInfo->Format == BMF_1BPP) pso->lDelta = BitmapInfo->Width / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -669,7 +670,6 @@ EngCreateBitmap(IN SIZEL Size,
|
|||
*/
|
||||
if ((Bits) && (Width))
|
||||
{
|
||||
#if 0
|
||||
switch (BitmapInfo.Format)
|
||||
{
|
||||
/* Do the conversion for each bit depth we support */
|
||||
|
@ -692,9 +692,6 @@ EngCreateBitmap(IN SIZEL Size,
|
|||
BitmapInfo.Width = Width / 4;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
BitmapInfo.Width = Width;
|
||||
|
||||
}
|
||||
|
||||
/* Now create the surface */
|
||||
|
|
Loading…
Reference in a new issue