Fixed functions where GDI objects were locked but not released.

svn path=/trunk/; revision=4034
This commit is contained in:
Eugene Ingerman 2003-01-18 20:47:32 +00:00
parent b8049283dc
commit 736ff1ac84
3 changed files with 20 additions and 13 deletions

View file

@ -1,4 +1,4 @@
/* $Id: brush.c,v 1.17 2002/09/08 10:23:52 chorns Exp $ /* $Id: brush.c,v 1.18 2003/01/18 20:46:31 ei Exp $
*/ */
@ -200,7 +200,7 @@ BOOL STDCALL W32kPatBlt(HDC hDC,
BrushObj = (BRUSHOBJ*) GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC); BrushObj = (BRUSHOBJ*) GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC);
assert(BrushObj); assert(BrushObj);
if (BrushObj->logbrush.lbStyle != BS_NULL) if (BrushObj->logbrush.lbStyle != BS_NULL)
{ {
if (Width > 0) if (Width > 0)
{ {
DestRect.left = XLeft + dc->w.DCOrgX; DestRect.left = XLeft + dc->w.DCOrgX;
@ -213,15 +213,15 @@ BOOL STDCALL W32kPatBlt(HDC hDC,
} }
if (Height > 0) if (Height > 0)
{ {
DestRect.top = YLeft + dc->w.DCOrgY; DestRect.top = YLeft + dc->w.DCOrgY;
DestRect.bottom = YLeft + Height + dc->w.DCOrgY; DestRect.bottom = YLeft + Height + dc->w.DCOrgY;
} }
else else
{ {
DestRect.top = YLeft + Height + dc->w.DCOrgY; DestRect.top = YLeft + Height + dc->w.DCOrgY;
DestRect.bottom = YLeft + dc->w.DCOrgY; DestRect.bottom = YLeft + dc->w.DCOrgY;
} }
ret = EngBitBlt(SurfObj, ret = EngBitBlt(SurfObj,
NULL, NULL,
NULL, NULL,
NULL, NULL,
@ -233,7 +233,8 @@ BOOL STDCALL W32kPatBlt(HDC hDC,
NULL, NULL,
PATCOPY); PATCOPY);
} }
GDIOBJ_UnlockObj( dc->w.hBrush, GO_PEN_MAGIC ); GDIOBJ_UnlockObj( dc->w.hBrush, GO_BRUSH_MAGIC );
DC_ReleasePtr( hDC );
return(ret); return(ret);
} }

View file

@ -54,19 +54,22 @@ HRGN WINAPI SaveVisRgn(HDC hdc)
return copy; return copy;
} }
INT WINAPI INT WINAPI
W32kSelectVisRgn(HDC hdc, HRGN hrgn) W32kSelectVisRgn(HDC hdc, HRGN hrgn)
{ {
int retval; int retval;
DC *dc; DC *dc;
if (!hrgn) return ERROR; if (!hrgn)
if (!(dc = DC_HandleToPtr(hdc))) return ERROR; return ERROR;
if (!(dc = DC_HandleToPtr(hdc)))
return ERROR;
dc->w.flags &= ~DC_DIRTY; dc->w.flags &= ~DC_DIRTY;
retval = W32kCombineRgn(dc->w.hVisRgn, hrgn, 0, RGN_COPY); retval = W32kCombineRgn(dc->w.hVisRgn, hrgn, 0, RGN_COPY);
CLIPPING_UpdateGCRegion(dc); CLIPPING_UpdateGCRegion(dc);
DC_ReleasePtr( hdc );
return retval; return retval;
} }
@ -93,12 +96,15 @@ int STDCALL W32kGetClipBox(HDC hDC,
int retval; int retval;
DC *dc; DC *dc;
if (!(dc = DC_HandleToPtr(hDC))) return ERROR; if (!(dc = DC_HandleToPtr(hDC)))
return ERROR;
retval = UnsafeW32kGetRgnBox(dc->w.hGCClipRgn, rc); retval = UnsafeW32kGetRgnBox(dc->w.hGCClipRgn, rc);
rc->left -= dc->w.DCOrgX; rc->left -= dc->w.DCOrgX;
rc->right -= dc->w.DCOrgX; rc->right -= dc->w.DCOrgX;
rc->top -= dc->w.DCOrgY; rc->top -= dc->w.DCOrgY;
rc->bottom -= dc->w.DCOrgY; rc->bottom -= dc->w.DCOrgY;
DC_ReleasePtr( hDC );
W32kDPtoLP(hDC, (LPPOINT)rc, 2); W32kDPtoLP(hDC, (LPPOINT)rc, 2);
return(retval); return(retval);
} }

View file

@ -140,12 +140,12 @@ W32kRectangle(HDC hDC,
if (BrushObj) if (BrushObj)
{ {
if (BrushObj->logbrush.lbStyle != BS_NULL) if (BrushObj->logbrush.lbStyle != BS_NULL)
{ {
DestRect.left = LeftRect + 1; DestRect.left = LeftRect + 1;
DestRect.right = RightRect - 1; DestRect.right = RightRect - 1;
DestRect.top = TopRect + 1; DestRect.top = TopRect + 1;
DestRect.bottom = BottomRect - 1; DestRect.bottom = BottomRect - 1;
ret = EngBitBlt(SurfObj, ret = EngBitBlt(SurfObj,
NULL, NULL,
NULL, NULL,
NULL, NULL,
@ -158,7 +158,7 @@ W32kRectangle(HDC hDC,
PATCOPY); PATCOPY);
} }
} }
GDIOBJ_UnlockObj( dc->w.hBrush, GO_PEN_MAGIC ); GDIOBJ_UnlockObj( dc->w.hBrush, GO_BRUSH_MAGIC );
} }
// FIXME: Move current position in DC? // FIXME: Move current position in DC?