mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[WIN32K:DIB] Fix some bugs in DIB_8BPP_BitBltSrcCopy (#9119)
- Fix destination row stride; - Fix source stride and double translation in the flip path. Related to CORE-2965
This commit is contained in:
@@ -323,6 +323,7 @@ DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
|
||||
DPRINT("Flip is bTopToBottom.\n");
|
||||
|
||||
DWORD Index;
|
||||
LONG SrcDelta;
|
||||
|
||||
/* Allocate enough pixels for a column in BYTE's */
|
||||
BYTE *store = ExAllocatePoolWithTag(NonPagedPool,
|
||||
@@ -344,6 +345,7 @@ DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
|
||||
SourceLine = (PBYTE)BltInfo->DestSurface->pvScan0 +
|
||||
(BltInfo->DestRect.top * BltInfo->DestSurface->lDelta) + BltInfo->DestRect.left +
|
||||
(BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1) * BltInfo->DestSurface->lDelta;
|
||||
SrcDelta = BltInfo->DestSurface->lDelta;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -352,6 +354,7 @@ DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
|
||||
((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1)
|
||||
* BltInfo->SourceSurface->lDelta) +
|
||||
BltInfo->SourcePoint.x;
|
||||
SrcDelta = BltInfo->SourceSurface->lDelta;
|
||||
}
|
||||
|
||||
/* This set the DestLine to the top line */
|
||||
@@ -371,9 +374,9 @@ DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
|
||||
/* Read up the column and store the pixels */
|
||||
for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
|
||||
{
|
||||
store[Index] = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *SourceBits);
|
||||
store[Index] = OneDone ? *SourceBits : (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *SourceBits);
|
||||
/* Go up a line */
|
||||
SourceBits -= BltInfo->SourceSurface->lDelta;
|
||||
SourceBits -= SrcDelta;
|
||||
Index++;
|
||||
}
|
||||
|
||||
@@ -384,7 +387,7 @@ DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
|
||||
{
|
||||
*DestBits = store[Index];
|
||||
/* Go down a line */
|
||||
DestBits += BltInfo->SourceSurface->lDelta;
|
||||
DestBits += BltInfo->DestSurface->lDelta;
|
||||
Index++;
|
||||
}
|
||||
/* Index to next column */
|
||||
|
||||
Reference in New Issue
Block a user