From f0e8f2df3725a1d7dba6f7580f72ee4b0a27349b Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 12 Nov 2007 06:43:44 +0000 Subject: [PATCH] 3rd FIN. svn path=/trunk/; revision=30374 --- reactos/include/reactos/win32k/ntgdihdl.h | 4 +- reactos/subsystems/win32/win32k/include/dc.h | 13 +++++- .../subsystems/win32/win32k/ntuser/metric.c | 4 +- .../subsystems/win32/win32k/objects/color.c | 2 +- .../subsystems/win32/win32k/objects/coord.c | 44 +++++++++---------- reactos/subsystems/win32/win32k/objects/dc.c | 44 +++++++++---------- 6 files changed, 59 insertions(+), 52 deletions(-) diff --git a/reactos/include/reactos/win32k/ntgdihdl.h b/reactos/include/reactos/win32k/ntgdihdl.h index 16b3902cfbc..e1b87eeb9d2 100644 --- a/reactos/include/reactos/win32k/ntgdihdl.h +++ b/reactos/include/reactos/win32k/ntgdihdl.h @@ -505,9 +505,7 @@ typedef struct _DC DC_ATTR Dc_Attr; HDC hNext; HDC hPrev; -// Old tymerz! Cant code? So just Haxzorcise it! -// How many pointers to devices do we need? - PGDIINFO GDIInfo; // In GDIDEVICE + UNICODE_STRING DriverName; CLIPOBJ *CombinedClip; diff --git a/reactos/subsystems/win32/win32k/include/dc.h b/reactos/subsystems/win32/win32k/include/dc.h index 1db4daa1a38..bab2bce03c4 100644 --- a/reactos/subsystems/win32/win32k/include/dc.h +++ b/reactos/subsystems/win32/win32k/include/dc.h @@ -36,16 +36,25 @@ typedef struct _GDIPOINTER /* should stay private to ENG */ typedef struct { HANDLE Handle; + PVOID pvEntry; + ULONG lucExcLock; + ULONG Tid; + + PERESOURCE_XP hsemDevLock; + + PVOID pfnSync; + DHPDEV PDev; DEVMODEW DMW; HSURF FillPatterns[HS_DDI_MAX]; DEVINFO DevInfo; GDIINFO GDIInfo; - PFILE_OBJECT VideoFileObject; - BOOLEAN PreparedDriver; + HANDLE hSpooler; ULONG DisplayNumber; + PFILE_OBJECT VideoFileObject; + BOOLEAN PreparedDriver; GDIPOINTER Pointer; /* Stuff to keep track of software cursors; win32k gdi part */ diff --git a/reactos/subsystems/win32/win32k/ntuser/metric.c b/reactos/subsystems/win32/win32k/ntuser/metric.c index 070a4a90eba..ccabc1fd174 100644 --- a/reactos/subsystems/win32/win32k/ntuser/metric.c +++ b/reactos/subsystems/win32/win32k/ntuser/metric.c @@ -167,8 +167,8 @@ UserGetSystemMetrics(ULONG Index) ScreenDC = DC_LockDc(ScreenDCHandle); if (NULL != ScreenDC) { - Width = ScreenDC->GDIInfo->ulHorzRes; - Height = ScreenDC->GDIInfo->ulVertRes; + Width = ((PGDIDEVICE)ScreenDC->pPDev)->GDIInfo.ulHorzRes; + Height = ((PGDIDEVICE)ScreenDC->pPDev)->GDIInfo.ulVertRes; DC_UnlockDc(ScreenDC); } NtGdiDeleteObjectApp(ScreenDCHandle); diff --git a/reactos/subsystems/win32/win32k/objects/color.c b/reactos/subsystems/win32/win32k/objects/color.c index 32f61ad6aab..48faafdb51c 100644 --- a/reactos/subsystems/win32/win32k/objects/color.c +++ b/reactos/subsystems/win32/win32k/objects/color.c @@ -451,7 +451,7 @@ IntGetSystemPaletteEntries(HDC hDC, } else { - Ret = dc->GDIInfo->ulNumPalReg; + Ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulNumPalReg; } } diff --git a/reactos/subsystems/win32/win32k/objects/coord.c b/reactos/subsystems/win32/win32k/objects/coord.c index d5cb5ce4d4c..6bdc34674a6 100644 --- a/reactos/subsystems/win32/win32k/objects/coord.c +++ b/reactos/subsystems/win32/win32k/objects/coord.c @@ -37,8 +37,8 @@ void FASTCALL IntFixIsotropicMapping(PDC dc) { - ULONG xdim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cx, dc->GDIInfo->ulHorzSize, dc->GDIInfo->ulHorzRes) / dc->Dc_Attr.szlWindowExt.cx; - ULONG ydim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cy, dc->GDIInfo->ulVertSize, dc->GDIInfo->ulVertRes) / dc->Dc_Attr.szlWindowExt.cy; + ULONG xdim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cx, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes) / dc->Dc_Attr.szlWindowExt.cx; + ULONG ydim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cy, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes) / dc->Dc_Attr.szlWindowExt.cy; if (xdim > ydim) { @@ -639,38 +639,38 @@ IntGdiSetMapMode(PDC dc, case MM_LOMETRIC: case MM_ISOTROPIC: - dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 10; - dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 10; - dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; - dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize * 10; + dc->Dc_Attr.szlWindowExt.cy = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize * 10; + dc->Dc_Attr.szlViewportExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case MM_HIMETRIC: - dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 100; - dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 100; - dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; - dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize * 100; + dc->Dc_Attr.szlWindowExt.cy = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize * 100; + dc->Dc_Attr.szlViewportExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case MM_LOENGLISH: - dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(1000, dc->GDIInfo->ulHorzSize, 254); - dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(1000, dc->GDIInfo->ulVertSize, 254); - dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; - dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(1000, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(1000, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case MM_HIENGLISH: - dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(10000, dc->GDIInfo->ulHorzSize, 254); - dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(10000, dc->GDIInfo->ulVertSize, 254); - dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; - dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(10000, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(10000, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case MM_TWIPS: - dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(14400, dc->GDIInfo->ulHorzSize, 254); - dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(14400, dc->GDIInfo->ulVertSize, 254); - dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes; - dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes; + dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(14400, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize, 254); + dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(14400, ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize, 254); + dc->Dc_Attr.szlViewportExt.cx = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; + dc->Dc_Attr.szlViewportExt.cy = -((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case MM_ANISOTROPIC: diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index 6d1d1a1a3c9..c5bf442e51a 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -210,7 +210,7 @@ NtGdiCreateCompatibleDC(HDC hDC) NewDC->DC_Type = DC_Type; NewDC->PDev = OrigDC->PDev; - NewDC->GDIInfo = OrigDC->GDIInfo; + NewDC->w.bitsPerPixel = OrigDC->w.bitsPerPixel; /* DriverName is copied in the AllocDC routine */ @@ -903,13 +903,13 @@ IntGdiCreateDC(PUNICODE_STRING Driver, NewDC->DC_Type = DC_TYPE_DIRECT; NewDC->IsIC = CreateAsIC; - NewDC->GDIInfo = &PrimarySurface.GDIInfo; NewDC->PDev = PrimarySurface.PDev; if(pUMdhpdev) pUMdhpdev = NewDC->PDev; NewDC->pPDev = (PVOID)&PrimarySurface; NewDC->w.hBitmap = PrimarySurface.Handle; - NewDC->w.bitsPerPixel = NewDC->GDIInfo->cBitsPixel * NewDC->GDIInfo->cPlanes; + NewDC->w.bitsPerPixel = ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.cBitsPixel * + ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.cPlanes; DPRINT("Bits per pel: %u\n", NewDC->w.bitsPerPixel); if (! CreateAsIC) @@ -920,8 +920,8 @@ IntGdiCreateDC(PUNICODE_STRING Driver, DC_UnlockDc( NewDC ); - hVisRgn = NtGdiCreateRectRgn(0, 0, NewDC->GDIInfo->ulHorzRes, - NewDC->GDIInfo->ulVertRes); + hVisRgn = NtGdiCreateRectRgn(0, 0, ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulHorzRes, + ((PGDIDEVICE)NewDC->pPDev)->GDIInfo.ulVertRes); IntGdiSelectVisRgn(hNewDC, hVisRgn); NtGdiDeleteObject(hVisRgn); @@ -1536,43 +1536,43 @@ IntGdiGetDeviceCaps(PDC dc, INT Index) switch (Index) { case DRIVERVERSION: - ret = dc->GDIInfo->ulVersion; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVersion; break; case TECHNOLOGY: - ret = dc->GDIInfo->ulTechnology; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulTechnology; break; case HORZSIZE: - ret = dc->GDIInfo->ulHorzSize; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzSize; break; case VERTSIZE: - ret = dc->GDIInfo->ulVertSize; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertSize; break; case HORZRES: - ret = dc->GDIInfo->ulHorzRes; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulHorzRes; break; case VERTRES: - ret = dc->GDIInfo->ulVertRes; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulVertRes; break; case LOGPIXELSX: - ret = dc->GDIInfo->ulLogPixelsX; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulLogPixelsX; break; case LOGPIXELSY: - ret = dc->GDIInfo->ulLogPixelsY; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulLogPixelsY; break; case BITSPIXEL: - ret = dc->GDIInfo->cBitsPixel; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.cBitsPixel; break; case PLANES: - ret = dc->GDIInfo->cPlanes; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.cPlanes; break; case NUMBRUSHES: @@ -1588,19 +1588,19 @@ IntGdiGetDeviceCaps(PDC dc, INT Index) break; case NUMCOLORS: - ret = dc->GDIInfo->ulNumColors; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulNumColors; break; case ASPECTX: - ret = dc->GDIInfo->ulAspectX; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulAspectX; break; case ASPECTY: - ret = dc->GDIInfo->ulAspectY; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulAspectY; break; case ASPECTXY: - ret = dc->GDIInfo->ulAspectXY; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulAspectXY; break; case PDEVICESIZE: @@ -1612,7 +1612,7 @@ IntGdiGetDeviceCaps(PDC dc, INT Index) break; case SIZEPALETTE: - ret = dc->GDIInfo->ulNumPalReg; /* FIXME not sure */ + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.ulNumPalReg; /* FIXME not sure */ break; case NUMRESERVED: @@ -1694,7 +1694,7 @@ IntGdiGetDeviceCaps(PDC dc, INT Index) break; case RASTERCAPS: - ret = dc->GDIInfo->flRaster; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.flRaster; break; case CURVECAPS: @@ -1710,7 +1710,7 @@ IntGdiGetDeviceCaps(PDC dc, INT Index) break; case TEXTCAPS: - ret = dc->GDIInfo->flTextCaps; + ret = ((PGDIDEVICE)dc->pPDev)->GDIInfo.flTextCaps; break; default: