Remove hBitmap from DC.rosdc and use DC.dclevel.pSurface instead.

svn path=/trunk/; revision=40509
This commit is contained in:
Timo Kreuzer
2009-04-14 20:50:02 +00:00
parent 1e46ec84b5
commit fc069970e4
17 changed files with 61 additions and 147 deletions
@@ -17,7 +17,6 @@ typedef struct _ROS_DC_INFO
HRGN hClipRgn; /* Clip region (may be 0) */
HRGN hVisRgn; /* Should me to DC. Visible region (must never be 0) */
HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */
HBITMAP hBitmap;
BYTE bitsPerPixel;
@@ -89,7 +89,6 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
PSYSTEM_CURSORINFO CurInfo;
PCURICON_OBJECT OldCursor;
HCURSOR Ret = (HCURSOR)0;
HBITMAP dcbmp;
HBITMAP hMask = 0;
SURFOBJ *soMask = NULL, *soColor = NULL;
XLATEOBJ *XlateObj = NULL;
@@ -120,13 +119,14 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
{
return Ret;
}
dcbmp = dc->rosdc.hBitmap;
DevInfo = (PDEVINFO)&dc->ppdev->DevInfo;
DC_UnlockDc(dc);
psurf = SURFACE_LockSurface(dcbmp);
psurf = dc->dclevel.pSurface;
if (!psurf)
{
DC_UnlockDc(dc);
return (HCURSOR)0;
}
pso = &psurf->SurfObj;
if (!NewCursor)
@@ -148,7 +148,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
CurInfo->ShowingCursor = 0;
}
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return Ret;
}
@@ -162,7 +162,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
if (maskBpp != 1)
{
DPRINT1("SetCursor: The Mask bitmap must have 1BPP!\n");
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return Ret;
}
@@ -207,7 +207,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
if ( !hMask )
{
SURFACE_UnlockSurface(MaskBmpObj);
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return (HCURSOR)0;
}
soMask = EngLockSurface((HSURF)hMask);
@@ -249,7 +249,6 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
DPRINT1("IntEngSetPointerShape returned %lx\n", Status);
}
SURFACE_UnlockSurface(psurf);
if(hMask)
{
EngUnlockSurface(soMask);
@@ -260,6 +259,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor,
EngDeleteXlate(XlateObj);
}
DC_UnlockDc(dc);
return Ret;
}
@@ -1724,7 +1724,6 @@ UserShowCursor(BOOL bShow)
HDC Screen;
PDC dc;
HBITMAP hbmpDc;
SURFOBJ *SurfObj;
SURFACE *psurfDc;
PDEVOBJ *ppdev;
@@ -1743,19 +1742,18 @@ UserShowCursor(BOOL bShow)
return showpointer; /* No mouse */
}
hbmpDc = dc->rosdc.hBitmap;
DC_UnlockDc(dc);
psurfDc = dc->dclevel.pSurface;
psurfDc = SURFACE_LockSurface(hbmpDc);
if ( !psurfDc )
{
DC_UnlockDc(dc);
return showpointer; /* No Mouse */
}
SurfObj = &psurfDc->SurfObj;
if (SurfObj == NULL)
{
SURFACE_UnlockSurface(psurfDc);
DC_UnlockDc(dc);
return showpointer; /* No mouse */
}
@@ -1763,7 +1761,7 @@ UserShowCursor(BOOL bShow)
if(ppdev == NULL)
{
SURFACE_UnlockSurface(psurfDc);
DC_UnlockDc(dc);
return showpointer; /* No mouse */
}
@@ -1800,6 +1798,6 @@ UserShowCursor(BOOL bShow)
}
}
SURFACE_UnlockSurface(psurfDc);
DC_UnlockDc(dc);
return showpointer;
}
@@ -432,12 +432,11 @@ IntGetDesktopWorkArea(PDESKTOP Desktop, RECTL *Rect)
SURFACE *psurf;
dc = DC_LockDc(ScreenDeviceContext);
/* FIXME - Handle dc == NULL!!!! */
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
if(psurf)
psurf = dc->dclevel.pSurface;
if (psurf)
{
Ret->right = psurf->SurfObj.sizlBitmap.cx;
Ret->bottom = psurf->SurfObj.sizlBitmap.cy;
SURFACE_UnlockSurface(psurf);
}
DC_UnlockDc(dc);
}
@@ -1072,7 +1072,6 @@ IntMouseInput(MOUSEINPUT *mi)
PWINSTATION_OBJECT WinSta;
BOOL DoMove, SwapButtons;
MSG Msg;
HBITMAP hBitmap;
SURFACE *psurf;
SURFOBJ *pso;
PDC dc;
@@ -1169,10 +1168,7 @@ IntMouseInput(MOUSEINPUT *mi)
dc = DC_LockDc(hDC);
if (dc)
{
hBitmap = dc->rosdc.hBitmap;
DC_UnlockDc(dc);
psurf = SURFACE_LockSurface(hBitmap);
psurf = dc->dclevel.pSurface;
if (psurf)
{
pso = &psurf->SurfObj;
@@ -1185,9 +1181,9 @@ IntMouseInput(MOUSEINPUT *mi)
* use the old values to move the pointer image */
gpsi->ptCursor.x = MousePos.x;
gpsi->ptCursor.y = MousePos.y;
SURFACE_UnlockSurface(psurf);
}
DC_UnlockDc(dc);
}
}
@@ -156,7 +156,7 @@ IntArc( DC *dc,
arctype,
pbrushPen);
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (NULL == psurf)
{
DPRINT1("Arc Fail 2\n");
@@ -174,7 +174,6 @@ IntArc( DC *dc,
PUTLINE(EfCx + CenterX, EfCy + CenterY, SfCx + CenterX, SfCy + CenterY, dc->eboLine);
pbrushPen->ptPenWidth.x = PenOrigWidth;
SURFACE_UnlockSurface(psurf);
PEN_UnlockPen(pbrushPen);
DPRINT("IntArc Exit.\n");
return ret;
@@ -120,7 +120,7 @@ NtGdiAlphaBlend(
}
/* Determine surfaces to be used in the bitblt */
BitmapDest = SURFACE_LockSurface(DCDest->rosdc.hBitmap);
BitmapDest = DCDest->dclevel.pSurface;
if (!BitmapDest)
{
if (hDCSrc != hDCDest)
@@ -128,14 +128,11 @@ NtGdiAlphaBlend(
DC_UnlockDc(DCDest);
return FALSE;
}
if (DCSrc->rosdc.hBitmap == DCDest->rosdc.hBitmap)
BitmapSrc = BitmapDest;
else
{
BitmapSrc = SURFACE_LockSurface(DCSrc->rosdc.hBitmap);
BitmapSrc = DCSrc->dclevel.pSurface;
if (!BitmapSrc)
{
SURFACE_UnlockSurface(BitmapDest);
if (hDCSrc != hDCDest)
DC_UnlockDc(DCSrc);
DC_UnlockDc(DCDest);
@@ -164,9 +161,6 @@ NtGdiAlphaBlend(
if (XlateObj != NULL)
EngDeleteXlate(XlateObj);
SURFACE_UnlockSurface(BitmapDest);
if (BitmapSrc != BitmapDest)
SURFACE_UnlockSurface(BitmapSrc);
DC_UnlockDc(DCDest);
if (hDCSrc != hDCDest)
DC_UnlockDc(DCSrc);
@@ -264,17 +258,14 @@ NtGdiBitBlt(
}
/* Determine surfaces to be used in the bitblt */
BitmapDest = SURFACE_LockSurface(DCDest->rosdc.hBitmap);
BitmapDest = DCDest->dclevel.pSurface;
if (!BitmapDest)
goto cleanup;
if (UsesSource)
{
if (DCSrc->rosdc.hBitmap == DCDest->rosdc.hBitmap)
BitmapSrc = BitmapDest;
else
{
BitmapSrc = SURFACE_LockSurface(DCSrc->rosdc.hBitmap);
BitmapSrc = DCSrc->dclevel.pSurface;
if (!BitmapSrc)
goto cleanup;
}
@@ -311,14 +302,6 @@ cleanup:
if (UsesSource && XlateObj != NULL)
EngDeleteXlate(XlateObj);
if(BitmapDest != NULL)
{
SURFACE_UnlockSurface(BitmapDest);
}
if (BitmapSrc != NULL && BitmapSrc != BitmapDest)
{
SURFACE_UnlockSurface(BitmapSrc);
}
if (UsesSource && hDCSrc != hDCDest)
{
DC_UnlockDc(DCSrc);
@@ -387,13 +370,13 @@ NtGdiTransparentBlt(
return TRUE;
}
BitmapDest = SURFACE_LockSurface(DCDest->rosdc.hBitmap);
BitmapDest = DCDest->dclevel.pSurface;
if (!BitmapDest)
{
goto done;
}
BitmapSrc = SURFACE_LockSurface(DCSrc->rosdc.hBitmap);
BitmapSrc = DCSrc->dclevel.pSurface;
if (!BitmapSrc)
{
goto done;
@@ -466,14 +449,6 @@ NtGdiTransparentBlt(
done:
DC_UnlockDc(DCSrc);
if (BitmapDest)
{
SURFACE_UnlockSurface(BitmapDest);
}
if (BitmapSrc)
{
SURFACE_UnlockSurface(BitmapSrc);
}
if(hdcDst != hdcSrc)
{
DC_UnlockDc(DCDest);
@@ -826,18 +801,13 @@ GreStretchBltMask(
BrushOrigin.y = 0;
/* Determine surfaces to be used in the bitblt */
BitmapDest = SURFACE_LockSurface(DCDest->rosdc.hBitmap);
BitmapDest = DCDest->dclevel.pSurface;
if (BitmapDest == NULL)
goto failed;
if (UsesSource)
{
if (DCSrc->rosdc.hBitmap == DCDest->rosdc.hBitmap)
{
BitmapSrc = BitmapDest;
}
else
{
BitmapSrc = SURFACE_LockSurface(DCSrc->rosdc.hBitmap);
BitmapSrc = DCSrc->dclevel.pSurface;
if (BitmapSrc == NULL)
goto failed;
}
@@ -862,7 +832,7 @@ GreStretchBltMask(
DCMask = DC_LockDc(hDCMask);
if (DCMask)
{
BitmapMask = SURFACE_LockSurface(DCMask->rosdc.hBitmap);
BitmapMask = DCMask->dclevel.pSurface;
if (BitmapMask &&
(BitmapMask->SurfObj.sizlBitmap.cx != WidthSrc ||
BitmapMask->SurfObj.sizlBitmap.cy != HeightSrc))
@@ -891,18 +861,6 @@ failed:
{
EngDeleteXlate(XlateObj);
}
if (BitmapSrc && DCSrc->rosdc.hBitmap != DCDest->rosdc.hBitmap)
{
SURFACE_UnlockSurface(BitmapSrc);
}
if (BitmapDest)
{
SURFACE_UnlockSurface(BitmapDest);
}
if (BitmapMask)
{
SURFACE_UnlockSurface(BitmapMask);
}
if (UsesSource && hDCSrc != hDCDest)
{
DC_UnlockDc(DCSrc);
@@ -967,7 +925,7 @@ IntPatBlt(
ASSERT(BrushObj);
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (psurf == NULL)
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
@@ -1024,8 +982,6 @@ IntPatBlt(
ROP3_TO_ROP4(ROP));
}
SURFACE_UnlockSurface(psurf);
return ret;
}
@@ -154,7 +154,7 @@ IntCreateCompatibleBitmap(
{
DIBSECTION dibs;
INT Count;
PSURFACE psurf = SURFACE_LockSurface(Dc->rosdc.hBitmap);
PSURFACE psurf = Dc->dclevel.pSurface;
Count = BITMAP_GetObject(psurf, sizeof(dibs), &dibs);
if (Count)
@@ -223,7 +223,6 @@ IntCreateCompatibleBitmap(
if (!PalGDI)
{
ExFreePoolWithTag(bi, TAG_TEMP);
SURFACE_UnlockSurface(psurf);
SetLastWin32Error(ERROR_INVALID_HANDLE);
return 0;
}
@@ -239,7 +238,6 @@ IntCreateCompatibleBitmap(
}
PALETTE_UnlockPalette(PalGDI);
}
SURFACE_UnlockSurface(psurf);
Bmp = DIB_CreateDIBSection(Dc,
bi,
@@ -254,7 +252,6 @@ IntCreateCompatibleBitmap(
}
}
}
SURFACE_UnlockSurface(psurf);
}
}
return Bmp;
@@ -361,7 +358,7 @@ NtGdiGetPixel(HDC hDC, INT XPos, INT YPos)
if (RECTL_bPointInRect(&dc->rosdc.CombinedClip->rclBounds, XPos, YPos))
{
bInRect = TRUE;
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
pso = &psurf->SurfObj;
if (psurf)
{
@@ -381,7 +378,6 @@ NtGdiGetPixel(HDC hDC, INT XPos, INT YPos)
}
EngDeleteXlate(XlateObj);
}
SURFACE_UnlockSurface(psurf);
}
}
DC_UnlockDc(dc);
@@ -212,6 +212,7 @@ IntGdiCreateDC(
HRGN hVisRgn;
UNICODE_STRING StdDriver;
BOOL calledFromUser;
HSURF hsurf;
RtlInitUnicodeString(&StdDriver, L"DISPLAY");
@@ -284,7 +285,9 @@ IntGdiCreateDC(
pdc->dhpdev = PrimarySurface.hPDev;
if (pUMdhpdev) pUMdhpdev = pdc->dhpdev; // set DHPDEV for device.
pdc->ppdev = (PVOID)&PrimarySurface;
pdc->rosdc.hBitmap = (HBITMAP)PrimarySurface.pSurface; // <- what kind of haxx0ry is that?
hsurf = (HBITMAP)PrimarySurface.pSurface; // <- what kind of haxx0ry is that?
pdc->dclevel.pSurface = SURFACE_ShareLockSurface(hsurf);
// ATM we only have one display.
pdcattr->ulDirty_ |= DC_PRIMARY_DISPLAY;
@@ -574,6 +577,7 @@ NtGdiCreateCompatibleDC(HDC hDC)
HRGN hVisRgn;
UNICODE_STRING DriverName;
DWORD Layout = 0;
HSURF hsurf;
if (hDC == NULL)
{
@@ -628,7 +632,8 @@ NtGdiCreateCompatibleDC(HDC hDC)
pdcattrNew->szlViewportExt = pdcattrOld->szlViewportExt;
pdcNew->dctype = DC_TYPE_MEMORY; // Always!
pdcNew->rosdc.hBitmap = NtGdiGetStockObject(DEFAULT_BITMAP);
hsurf = NtGdiGetStockObject(DEFAULT_BITMAP);
pdcNew->dclevel.pSurface = SURFACE_ShareLockSurface(hsurf);
pdcNew->ppdev = pdcOld->ppdev;
pdcNew->dclevel.hpal = pdcOld->dclevel.hpal;
@@ -20,11 +20,10 @@ IntUpdateBrushXlate(PDC pdc, XLATEOBJ **ppxlo, BRUSH *pbrush)
XLATEOBJ *pxlo = NULL;
HPALETTE hPalette = NULL;
psurf = SURFACE_LockSurface(pdc->rosdc.hBitmap);
psurf = pdc->dclevel.pSurface;
if (psurf)
{
hPalette = psurf->hDIBPalette;
SURFACE_UnlockSurface(psurf);
}
if (!hPalette) hPalette = pPrimarySurface->DevInfo.hpalDefault;
@@ -185,14 +184,12 @@ DC_vUpdateTextBrush(PDC pdc)
SURFACE *psurf;
HPALETTE hpal;
// psurf = pdc->dclevel.pSurface;
psurf = SURFACE_LockSurface(pdc->rosdc.hBitmap);
psurf = pdc->dclevel.pSurface;
if (psurf)
{
hpal = psurf->hDIBPalette;
if (!hpal) hpal = pPrimarySurface->DevInfo.hpalDefault;
pxlo = IntEngCreateXlate(0, PAL_RGB, hpal, NULL);
SURFACE_UnlockSurface(psurf);
}
/* Update the eboText's solid color */
@@ -216,14 +213,12 @@ DC_vUpdateBackgroundBrush(PDC pdc)
SURFACE *psurf;
HPALETTE hpal;
// psurf = pdc->dclevel.pSurface;
psurf = SURFACE_LockSurface(pdc->rosdc.hBitmap);
psurf = pdc->dclevel.pSurface;
if (psurf)
{
hpal = psurf->hDIBPalette;
if (!hpal) hpal = pPrimarySurface->DevInfo.hpalDefault;
pxlo = IntEngCreateXlate(0, PAL_RGB, hpal, NULL);
SURFACE_UnlockSurface(psurf);
}
/* Update the eboBackground's solid color */
@@ -386,11 +381,6 @@ NtGdiSelectBitmap(
psurfOld = pDC->dclevel.pSurface;
hOrgBmp = psurfOld ? psurfOld->BaseObject.hHmgr : NULL;
/* FIXME: ros hack */
hOrgBmp = pDC->rosdc.hBitmap;
pDC->rosdc.hBitmap = hBmp;
/* Release the old bitmap, reference the new */
DC_vSelectSurface(pDC, psurfBmp);
@@ -530,8 +520,11 @@ NtGdiGetDCObject(HDC hDC, INT ObjectType)
break;
case GDI_OBJECT_TYPE_BITMAP:
SelObject = pdc->rosdc.hBitmap;
{
SURFACE *psurf = pdc->dclevel.pSurface;
SelObject = psurf ? psurf->BaseObject.hHmgr : NULL;
break;
}
case GDI_OBJECT_TYPE_COLORSPACE:
DPRINT1("FIXME: NtGdiGetCurrentObject() ObjectType OBJ_COLORSPACE not supported yet!\n");
@@ -48,8 +48,6 @@ DC_vCopyState(PDC pdcSrc, PDC pdcDst)
pdcDst->dclevel.plfnt = pdcSrc->dclevel.plfnt;
/* ROS hacks */
pdcDst->rosdc.hBitmap = pdcSrc->rosdc.hBitmap;
if (pdcDst->dctype != DC_TYPE_MEMORY)
{
pdcDst->rosdc.bitsPerPixel = pdcSrc->rosdc.bitsPerPixel;
@@ -85,7 +85,7 @@ IntSetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, CONST RGBQUAD *Color
return 0;
}
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (psurf == NULL)
{
DC_UnlockDc(dc);
@@ -95,7 +95,6 @@ IntSetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, CONST RGBQUAD *Color
if (psurf->hSecure == NULL)
{
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
SetLastWin32Error(ERROR_INVALID_PARAMETER);
return 0;
@@ -110,7 +109,6 @@ IntSetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, CONST RGBQUAD *Color
PalGDI = PALETTE_LockPalette(psurf->hDIBPalette);
if (PalGDI == NULL)
{
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
SetLastWin32Error(ERROR_INVALID_HANDLE);
return 0;
@@ -132,7 +130,6 @@ IntSetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, CONST RGBQUAD *Color
/* Mark the brushes invalid */
dc->pdcattr->ulDirty_ |= DIRTY_FILL|DIRTY_LINE|DIRTY_BACKGROUND|DIRTY_TEXT;
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return Entries;
@@ -154,7 +151,7 @@ IntGetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, RGBQUAD *Colors)
return 0;
}
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (psurf == NULL)
{
DC_UnlockDc(dc);
@@ -164,7 +161,6 @@ IntGetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, RGBQUAD *Colors)
if (psurf->hSecure == NULL)
{
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
SetLastWin32Error(ERROR_INVALID_PARAMETER);
return 0;
@@ -180,7 +176,6 @@ IntGetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, RGBQUAD *Colors)
PalGDI = PALETTE_LockPalette(psurf->hDIBPalette);
if (PalGDI == NULL)
{
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
SetLastWin32Error(ERROR_INVALID_HANDLE);
return 0;
@@ -200,7 +195,6 @@ IntGetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, RGBQUAD *Colors)
else
Entries = 0;
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return Entries;
@@ -484,14 +478,13 @@ NtGdiSetDIBitsToDeviceInternal(
DDBPalette = pDC->ppdev->DevInfo.hpalDefault;
/* Try to use hDIBPalette if it exists */
pSurf = SURFACE_LockSurface(pDC->rosdc.hBitmap);
pSurf = pDC->dclevel.pSurface;
if (pSurf && pSurf->hDIBPalette)
{
DDBPalette = pSurf->hDIBPalette;
SURFACE_UnlockSurface(pSurf);
}
pDestSurf = EngLockSurface((HSURF)pDC->rosdc.hBitmap);
pDestSurf = pSurf ? &pSurf->SurfObj : NULL;
rcDest.left = XDest;
rcDest.top = YDest;
@@ -582,7 +575,6 @@ Exit:
if (hSourceBitmap) EngDeleteSurface((HSURF)hSourceBitmap);
if (XlateObj) EngDeleteXlate(XlateObj);
if (DIBPalette) PALETTE_FreePaletteByHandle(DIBPalette);
EngUnlockSurface(pDestSurf);
DC_UnlockDc(pDC);
return ret;
@@ -1257,7 +1249,7 @@ NtGdiCreateDIBitmapInternal(IN HDC hDc,
{
DIBSECTION dibs;
INT Count;
SURFACE *psurf = SURFACE_LockSurface(Dc->rosdc.hBitmap);
SURFACE *psurf = Dc->dclevel.pSurface;
Count = BITMAP_GetObject(psurf, sizeof(dibs), &dibs);
if (!Count)
bpp = 1;
@@ -1270,7 +1262,6 @@ NtGdiCreateDIBitmapInternal(IN HDC hDc,
/* A DIB section is selected in the DC */
bpp = dibs.dsBmih.biBitCount;
}
SURFACE_UnlockSurface(psurf);
}
}
Bmp = IntCreateDIBitmap(Dc, cx, cy, bpp, fInit, pjInit, pbmi, iUsage);
@@ -1198,7 +1198,7 @@ IntFillRect( DC *dc,
ASSERT(pbrush);
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (psurf == NULL)
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
@@ -1249,7 +1249,6 @@ IntFillRect( DC *dc,
ROP3_TO_ROP4(ROP));
}
SURFACE_UnlockSurface(psurf);
return (int)Ret;
}
@@ -96,7 +96,7 @@ IntGdiPolygon(PDC dc,
/* Special locking order to avoid lock-ups */
pbrFill = dc->dclevel.pbrFill;
pbrLine = dc->dclevel.pbrLine;
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
/* FIXME - psurf can be NULL!!!! don't assert but handle this case gracefully! */
ASSERT(psurf);
@@ -153,7 +153,6 @@ IntGdiPolygon(PDC dc,
}
}
}
SURFACE_UnlockSurface(psurf);
return ret;
}
@@ -581,7 +580,7 @@ IntRectangle(PDC dc,
ret = FALSE;
goto cleanup;
}
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (!psurf)
{
ret = FALSE;
@@ -646,9 +645,6 @@ IntRectangle(PDC dc,
}
cleanup:
if (psurf)
SURFACE_UnlockSurface(psurf);
/* Move current position in DC?
MSDN: The current position is neither used nor updated by Rectangle. */
@@ -917,7 +913,7 @@ IntGdiGradientFill(
DitherOrg.x += dc->ptlDCOrig.x;
DitherOrg.y += dc->ptlDCOrig.y;
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
/* FIXME - psurf can be NULL!!! Don't assert but handle this case gracefully! */
ASSERT(psurf);
@@ -947,7 +943,6 @@ IntGdiGradientFill(
&DitherOrg,
ulMode);
SURFACE_UnlockSurface(psurf);
EngDeleteXlate(XlateObj);
return Ret;
@@ -1121,7 +1116,7 @@ NtGdiExtFloodFill(
Ret = FALSE;
goto cleanup;
}
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (!psurf)
{
Ret = FALSE;
@@ -1129,9 +1124,6 @@ NtGdiExtFloodFill(
}
cleanup:
if (psurf)
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return Ret;
}
@@ -3171,7 +3171,7 @@ GreExtTextOutW(
IntLPtoDP(dc, (POINT *)lprc, 2);
}
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
if (!psurf)
{
goto fail;
@@ -3579,7 +3579,6 @@ GreExtTextOutW(
EngDeleteXlate(XlateObj);
EngDeleteXlate(XlateObj2);
SURFACE_UnlockSurface(psurf);
if (TextObj != NULL)
TEXTOBJ_UnlockText(TextObj);
good:
@@ -3594,8 +3593,6 @@ fail:
EngDeleteXlate(XlateObj);
if (TextObj != NULL)
TEXTOBJ_UnlockText(TextObj);
if (psurf != NULL)
SURFACE_UnlockSurface(psurf);
DC_UnlockDc(dc);
return FALSE;
@@ -113,7 +113,7 @@ IntGdiLineTo(DC *dc,
if (pdcattr->ulDirty_ & (DIRTY_LINE | DC_PEN_DIRTY))
DC_vUpdateLineBrush(dc);
psurf = SURFACE_LockSurface( dc->rosdc.hBitmap );
psurf = dc->dclevel.pSurface;
if (NULL == psurf)
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
@@ -153,7 +153,6 @@ IntGdiLineTo(DC *dc,
ROP2_TO_MIX(pdcattr->jROP2));
}
SURFACE_UnlockSurface(psurf);
}
if (Ret)
@@ -263,7 +262,7 @@ IntGdiPolyline(DC *dc,
Points = EngAllocMem(0, Count * sizeof(POINT), TAG_COORD);
if (Points != NULL)
{
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
/* FIXME - psurf can be NULL!!!!
Don't assert but handle this case gracefully! */
ASSERT(psurf);
@@ -285,7 +284,6 @@ IntGdiPolyline(DC *dc,
Count,
ROP2_TO_MIX(pdcattr->jROP2));
SURFACE_UnlockSurface(psurf);
EngFreeMem(Points);
}
else
@@ -114,7 +114,7 @@ IntGdiExtEscape(
INT OutSize,
LPSTR OutData)
{
SURFACE *psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
SURFACE *psurf = dc->dclevel.pSurface;
INT Result;
/* FIXME - Handle psurf == NULL !!!!!! */
@@ -139,7 +139,6 @@ IntGdiExtEscape(
OutSize,
(PVOID)OutData );
}
SURFACE_UnlockSurface(psurf);
return Result;
}
@@ -2936,7 +2936,7 @@ IntGdiPaintRgn(
BrushOrigin.x = pdcattr->ptlBrushOrigin.x;
BrushOrigin.y = pdcattr->ptlBrushOrigin.y;
psurf = SURFACE_LockSurface(dc->rosdc.hBitmap);
psurf = dc->dclevel.pSurface;
/* FIXME - Handle psurf == NULL !!!! */
bRet = IntEngPaint(&psurf->SurfObj,
@@ -2945,7 +2945,6 @@ IntGdiPaintRgn(
&BrushOrigin,
0xFFFF);//FIXME:don't know what to put here
SURFACE_UnlockSurface(psurf);
REGION_UnlockRgn(visrgn);
GreDeleteObject(tmpVisRgn);