mirror of
https://github.com/reactos/reactos.git
synced 2024-08-12 06:06:27 +00:00
Prevent a double lock on the surface by splitting FillSolid into a locking and
unlocked version, allowing surface.c to use the locking version. svn path=/trunk/; revision=40245
This commit is contained in:
parent
db8815a497
commit
2bb581031f
|
@ -32,7 +32,7 @@
|
|||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
BOOL APIENTRY FillSolid(SURFOBJ *pso, PRECTL pRect, ULONG iColor)
|
||||
static BOOL APIENTRY FillSolidUnlocked(SURFOBJ *pso, PRECTL pRect, ULONG iColor)
|
||||
{
|
||||
LONG y;
|
||||
ULONG LineWidth;
|
||||
|
@ -41,7 +41,6 @@ BOOL APIENTRY FillSolid(SURFOBJ *pso, PRECTL pRect, ULONG iColor)
|
|||
ASSERT(pso);
|
||||
ASSERT(pRect);
|
||||
psurf = CONTAINING_RECORD(pso, SURFACE, SurfObj);
|
||||
SURFACE_LockBitmapBits(psurf);
|
||||
MouseSafetyOnDrawStart(pso, pRect->left, pRect->top, pRect->right, pRect->bottom);
|
||||
LineWidth = pRect->right - pRect->left;
|
||||
DPRINT(" LineWidth: %d, top: %d, bottom: %d\n", LineWidth, pRect->top, pRect->bottom);
|
||||
|
@ -51,11 +50,21 @@ BOOL APIENTRY FillSolid(SURFOBJ *pso, PRECTL pRect, ULONG iColor)
|
|||
pso, pRect->left, pRect->right, y, iColor);
|
||||
}
|
||||
MouseSafetyOnDrawEnd(pso);
|
||||
SURFACE_UnlockBitmapBits(psurf);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL APIENTRY FillSolid(SURFOBJ *pso, PRECTL pRect, ULONG iColor)
|
||||
{
|
||||
SURFACE *psurf;
|
||||
BOOL Result;
|
||||
psurf = CONTAINING_RECORD(pso, SURFACE, SurfObj);
|
||||
SURFACE_LockBitmapBits(psurf);
|
||||
Result = FillSolidUnlocked(pso, pRect, iColor);
|
||||
SURFACE_UnlockBitmapBits(psurf);
|
||||
return Result;
|
||||
}
|
||||
|
||||
BOOL APIENTRY
|
||||
EngPaintRgn(SURFOBJ *pso, CLIPOBJ *ClipRegion, ULONG iColor, MIX Mix,
|
||||
BRUSHOBJ *BrushObj, POINTL *BrushPoint)
|
||||
|
@ -78,7 +87,7 @@ EngPaintRgn(SURFOBJ *pso, CLIPOBJ *ClipRegion, ULONG iColor, MIX Mix,
|
|||
|
||||
if (ClipRegion->iDComplexity == DC_RECT)
|
||||
{
|
||||
FillSolid(pso, &(ClipRegion->rclBounds), iColor);
|
||||
FillSolidUnlocked(pso, &(ClipRegion->rclBounds), iColor);
|
||||
} else {
|
||||
|
||||
/* Enumerate all the rectangles and draw them */
|
||||
|
@ -87,7 +96,7 @@ EngPaintRgn(SURFOBJ *pso, CLIPOBJ *ClipRegion, ULONG iColor, MIX Mix,
|
|||
do {
|
||||
EnumMore = CLIPOBJ_bEnum(ClipRegion, sizeof(RectEnum), (PVOID) &RectEnum);
|
||||
for (i = 0; i < RectEnum.c; i++) {
|
||||
FillSolid(pso, RectEnum.arcl + i, iColor);
|
||||
FillSolidUnlocked(pso, RectEnum.arcl + i, iColor);
|
||||
}
|
||||
} while (EnumMore);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue