Author: jimtabor
Date: Tue Aug 21 09:01:00 2007
New Revision: 28442
URL:
http://svn.reactos.org/svn/reactos?rev=28442&view=rev
Log:
- Started the use of DC_ATTR. Created dcutil.c to handle xfers. I choose XForms this time
and still trouble shooting it. If anyone wants to join in and help. Optimize syncing the
data packets, add more, etc. Don't be shy!
- Removed NtGdiGetWorldTransform from w32ksvc.db and updated ntgdibad.h.
- Implemented GetTransform redirect to NtGdiGetTransform.
- Connected the gdi32 parts.
Added:
trunk/reactos/subsystems/win32/win32k/objects/dcutil.c
- copied, changed from r28441, trunk/reactos/subsystems/win32/win32k/objects/font.c
Modified:
trunk/reactos/dll/win32/gdi32/gdi32.def
trunk/reactos/dll/win32/gdi32/misc/stubs.c
trunk/reactos/dll/win32/gdi32/objects/coord.c
trunk/reactos/include/reactos/win32k/ntgdibad.h
trunk/reactos/subsystems/win32/win32k/include/dc.h
trunk/reactos/subsystems/win32/win32k/objects/coord.c
trunk/reactos/subsystems/win32/win32k/objects/dc.c
trunk/reactos/subsystems/win32/win32k/objects/path.c
trunk/reactos/subsystems/win32/win32k/w32ksvc.db
trunk/reactos/subsystems/win32/win32k/win32k.rbuild
Modified: trunk/reactos/dll/win32/gdi32/gdi32.def
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/gdi32.def?…
==============================================================================
--- trunk/reactos/dll/win32/gdi32/gdi32.def (original)
+++ trunk/reactos/dll/win32/gdi32/gdi32.def Tue Aug 21 09:01:00 2007
@@ -453,13 +453,13 @@
GetTextFaceAliasW@12
GetTextMetricsA@8
GetTextMetricsW@8
-GetTransform@12
+GetTransform@12=NtGdiGetTransform@12
GetViewportExtEx@8
GetViewportOrgEx@8
GetWinMetaFileBits@20
GetWindowExtEx@8
GetWindowOrgEx@8
-GetWorldTransform@8=NtGdiGetWorldTransform@8
+GetWorldTransform@8
HT_Get8BPPFormatPalette@16
HT_Get8BPPMaskPalette@24
IntersectClipRect@20=NtGdiIntersectClipRect@20
Modified: trunk/reactos/dll/win32/gdi32/misc/stubs.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/misc/stubs…
==============================================================================
--- trunk/reactos/dll/win32/gdi32/misc/stubs.c (original)
+++ trunk/reactos/dll/win32/gdi32/misc/stubs.c Tue Aug 21 09:01:00 2007
@@ -1863,18 +1863,6 @@
int
STDCALL
GetTextFaceAliasW(HDC hdc,int cChar,LPWSTR pszOut)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GetTransform(HDC hdc, DWORD iXform, LPXFORM pxf)
{
UNIMPLEMENTED;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
Modified: trunk/reactos/dll/win32/gdi32/objects/coord.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/objects/co…
==============================================================================
--- trunk/reactos/dll/win32/gdi32/objects/coord.c (original)
+++ trunk/reactos/dll/win32/gdi32/objects/coord.c Tue Aug 21 09:01:00 2007
@@ -103,7 +103,7 @@
if (Dc_Attr->flXform & ( DEVICE_TO_WORLD_INVALID | // Force a full
recalibration!
PAGE_XLATE_CHANGED | // Changes or Updates have been
made,
PAGE_EXTENTS_CHANGED | // do processing in kernel space.
- WORLD_XFORM_CHANGED )
+ WORLD_XFORM_CHANGED ))
#endif
return NtGdiTransformPoints( hDC, Points, Points, Count, GdiDpToLp); // DPtoLP mode.
#if 0
@@ -121,7 +121,7 @@
STDCALL
LPtoDP ( HDC hDC, LPPOINT Points, INT Count )
{
-#if 0
+//#if 0
INT i;
PDC_ATTR Dc_Attr;
@@ -129,17 +129,25 @@
if (Dc_Attr->flXform & ( PAGE_XLATE_CHANGED | // Check for Changes and
Updates
PAGE_EXTENTS_CHANGED |
- WORLD_XFORM_CHANGED )
-#endif
+ WORLD_XFORM_CHANGED ))
+//#endif
return NtGdiTransformPoints( hDC, Points, Points, Count, GdiLpToDp); // LPtoDP mode
-#if 0
+//#if 0
else
{
for ( i = 0; i < Count; i++ )
CoordCnvP ( &Dc_Attr->mxWorldToDevice, &Points[i] );
}
return TRUE;
-#endif
+//#endif
+}
+
+
+BOOL
+STDCALL
+GetWorldTransform( HDC hDC, LPXFORM lpXform )
+{
+ return NtGdiGetTransform( hDC, GdiWorldSpaceToPageSpace, lpXform);
}
Modified: trunk/reactos/include/reactos/win32k/ntgdibad.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntg…
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntgdibad.h (original)
+++ trunk/reactos/include/reactos/win32k/ntgdibad.h Tue Aug 21 09:01:00 2007
@@ -465,14 +465,6 @@
/* Needs to be done in user-mode. */
BOOL STDCALL NtGdiGetWindowOrgEx(HDC hDC, LPPOINT windowOrg);
-/* Use NtGdiGetTransform with GdiWorldSpaceToPageSpace */
-BOOL
-STDCALL
-NtGdiGetWorldTransform (
- HDC hDC,
- LPXFORM Xform
- );
-
/* Needs to be done in user-mode. */
BOOL
STDCALL
Modified: trunk/reactos/subsystems/win32/win32k/include/dc.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/dc.h (original)
+++ trunk/reactos/subsystems/win32/win32k/include/dc.h Tue Aug 21 09:01:00 2007
@@ -153,6 +153,8 @@
VOID FASTCALL DC_UpdateXforms(PDC dc);
BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
+BOOL FASTCALL DCU_UpdateUserXForms(PDC, ULONG);
+
VOID FASTCALL IntGetViewportExtEx(PDC dc, LPSIZE pt);
VOID FASTCALL IntGetViewportOrgEx(PDC dc, LPPOINT pt);
VOID FASTCALL IntGetWindowExtEx(PDC dc, LPSIZE pt);
Modified: trunk/reactos/subsystems/win32/win32k/objects/coord.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/coord.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/coord.c Tue Aug 21 09:01:00 2007
@@ -194,7 +194,6 @@
case MWT_MAX+1: // Must be MWT_SET????
pDc->w.xformWorld2Wnd = *lpXForm; // Do it like Wine.
- DC_UpdateXforms(pDc); // Good wine port here too.
break;
default:
@@ -203,7 +202,6 @@
}
DC_UpdateXforms(pDc);
- DC_UnlockDc(pDc);
return TRUE;
}
@@ -229,8 +227,9 @@
BOOL
STDCALL
-NtGdiGetWorldTransform(HDC hDC,
- LPXFORM XForm)
+NtGdiGetTransform(HDC hDC,
+ DWORD iXform,
+ LPXFORM XForm)
{
PDC dc;
NTSTATUS Status = STATUS_SUCCESS;
@@ -253,7 +252,14 @@
ProbeForWrite(XForm,
sizeof(XFORM),
1);
- *XForm = dc->w.xformWorld2Wnd;
+ switch(iXform)
+ {
+ case GdiWorldSpaceToPageSpace:
+ *XForm = dc->w.xformWorld2Wnd;
+ break;
+ default:
+ break;
+ }
}
_SEH_HANDLE
{
@@ -403,7 +409,10 @@
SetLastNtError(Status);
return FALSE;
}
-
+//
+// If we are getting called that means User XForms is a mess!
+//
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
ExFreePool(Points);
return TRUE;
@@ -436,7 +445,7 @@
{
ProbeForRead(UnsafeXForm, sizeof(XFORM), 1);
RtlCopyMemory(&SafeXForm, UnsafeXForm, sizeof(XFORM));
-
+
Ret = IntGdiModifyWorldTransform(dc, &SafeXForm, Mode);
}
_SEH_HANDLE
@@ -493,7 +502,7 @@
dc->Dc_Attr.ptlViewportOrg.x += XOffset;
dc->Dc_Attr.ptlViewportOrg.y += YOffset;
DC_UpdateXforms(dc);
-
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
}
@@ -544,6 +553,7 @@
dc->Dc_Attr.ptlWindowOrg.y += YOffset;
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
@@ -680,6 +690,7 @@
}
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
}
DC_UnlockDc(dc);
@@ -732,7 +743,7 @@
Size->cx = dc->Dc_Attr.szlViewportExt.cx;
Size->cy = dc->Dc_Attr.szlViewportExt.cy;
- dc->Dc_Attr.szlViewportExt.cx = XExtent;
+ dc->Dc_Attr.szlViewportExt.cx = XExtent;
dc->Dc_Attr.szlViewportExt.cy = YExtent;
if (dc->Dc_Attr.iMapMode == MM_ISOTROPIC)
@@ -754,6 +765,7 @@
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
@@ -805,6 +817,7 @@
dc->Dc_Attr.ptlViewportOrg.y = Y;
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
@@ -868,6 +881,7 @@
dc->Dc_Attr.szlWindowExt.cy = YExtent;
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
@@ -919,6 +933,7 @@
dc->Dc_Attr.ptlWindowOrg.y = Y;
DC_UpdateXforms(dc);
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
DC_UnlockDc(dc);
return TRUE;
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c Tue Aug 21 09:01:00 2007
@@ -1327,6 +1327,7 @@
newdc->w.xformWorld2Vport = dc->w.xformWorld2Vport;
newdc->w.xformVport2World = dc->w.xformVport2World;
newdc->w.vport2WorldValid = dc->w.vport2WorldValid;
+ DCU_UpdateUserXForms(newdc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
newdc->Dc_Attr.ptlWindowOrg.x = dc->Dc_Attr.ptlWindowOrg.x;
newdc->Dc_Attr.ptlWindowOrg.y = dc->Dc_Attr.ptlWindowOrg.y;
newdc->Dc_Attr.szlWindowExt.cx = dc->Dc_Attr.szlWindowExt.cx;
@@ -1409,7 +1410,7 @@
dc->w.xformWorld2Vport = dcs->w.xformWorld2Vport;
dc->w.xformVport2World = dcs->w.xformVport2World;
dc->w.vport2WorldValid = dcs->w.vport2WorldValid;
-
+ DCU_UpdateUserXForms(dc,
WORLD_TO_PAGE_IDENTITY|DEVICE_TO_WORLD_INVALID|WORLD_XFORM_CHANGED );
dc->Dc_Attr.ptlWindowOrg.x = dcs->Dc_Attr.ptlWindowOrg.x;
dc->Dc_Attr.ptlWindowOrg.y = dcs->Dc_Attr.ptlWindowOrg.y;
dc->Dc_Attr.szlWindowExt.cx = dcs->Dc_Attr.szlWindowExt.cx;
@@ -2327,7 +2328,7 @@
PDC NewDC;
HDC hDC;
PWSTR Buf = NULL;
-// PDC_ATTR DC_Attr = NULL;
+ PDC_ATTR DC_Attr = NULL;
if (Driver != NULL)
{
@@ -2348,7 +2349,7 @@
}
return NULL;
}
-#if 0
+//#if 0
PVOID NewMem = NULL;
ULONG MemSize = sizeof(DC_ATTR); //PAGE_SIZE it will allocate that size
NTSTATUS Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
@@ -2374,69 +2375,66 @@
}
}
KeLeaveCriticalRegion();
-#endif
+//#endif
NewDC = DC_LockDc(hDC);
/* FIXME - Handle NewDC == NULL! */
-#if 0
+//#if 0
if(NewMem)
{
NewDC->pDc_Attr = NewMem; // Store pointer
DC_Attr = NewMem;
}
-#endif
+//#endif
if (Driver != NULL)
{
RtlCopyMemory(&NewDC->DriverName, Driver, sizeof(UNICODE_STRING));
NewDC->DriverName.Buffer = Buf;
}
-// gxf_long a;
-// a.f = 1.0f;
-
NewDC->w.xformWorld2Wnd.eM11 = 1.0f;
-// DC_Attr->mxWorldToPage.efM11.lExp = XFPEXP(a);
-// DC_Attr->mxWorldToPage.efM11.lMant = XFPMANT(a);
-
- NewDC->w.xformWorld2Wnd.eM12 = 0.0f; //Already Zero!
+ NewDC->w.xformWorld2Wnd.eM12 = 0.0f;
NewDC->w.xformWorld2Wnd.eM21 = 0.0f;
-
NewDC->w.xformWorld2Wnd.eM22 = 1.0f;
-// DC_Attr->mxWorldToPage.efM22.lExp = XFPEXP(a);
-// DC_Attr->mxWorldToPage.efM22.lMant = XFPMANT(a);
-
- NewDC->w.xformWorld2Wnd.eDx = 0.0f; //Already Zero!
+ NewDC->w.xformWorld2Wnd.eDx = 0.0f;
NewDC->w.xformWorld2Wnd.eDy = 0.0f;
-
NewDC->w.xformWorld2Vport = NewDC->w.xformWorld2Wnd;
-// DC_Attr->mxWorldToDevice = DC_Attr->mxWorldToPage;
-
NewDC->w.xformVport2World = NewDC->w.xformWorld2Wnd;
-// DC_Attr->mxDevicetoWorld = DC_Attr->mxWorldToPage;
-
NewDC->w.vport2WorldValid = TRUE;
-// DC_Attr->flXform = DEVICE_TO_PAGE_INVALID; // More research.
+
+ XForm2MatrixS( &DC_Attr->mxWorldToDevice, &NewDC->w.xformWorld2Vport);
+ XForm2MatrixS( &DC_Attr->mxDevicetoWorld, &NewDC->w.xformVport2World);
+ XForm2MatrixS( &DC_Attr->mxWorldToPage, &NewDC->w.xformWorld2Wnd);
+
+// Setup syncing bits for the dcattr data packets.
+ NewDC->Dc_Attr.flXform = DEVICE_TO_PAGE_INVALID;
+ DC_Attr->flXform = NewDC->Dc_Attr.flXform;
+ NewDC->Dc_Attr.ulDirty_ = 0; // Server side
+ DC_Attr->ulDirty_ = 0; // Client side
NewDC->Dc_Attr.iMapMode = MM_TEXT;
-// DC_Attr->iMapMode = MM_TEXT;
-
-
-//// HELP! FLOAT to INT !!!!!!!!!
- NewDC->Dc_Attr.szlWindowExt.cx = 1.0f;
- NewDC->Dc_Attr.szlWindowExt.cy = 1.0f;
- NewDC->Dc_Attr.szlViewportExt.cx = 1.0f;
- NewDC->Dc_Attr.szlViewportExt.cy = 1.0f;
+ DC_Attr->iMapMode = MM_TEXT;
+
+ NewDC->Dc_Attr.szlWindowExt.cx = 1; // Float to Int,,, WRONG!
+ NewDC->Dc_Attr.szlWindowExt.cy = 1;
+ NewDC->Dc_Attr.szlViewportExt.cx = 1;
+ NewDC->Dc_Attr.szlViewportExt.cy = 1;
+ DC_Attr->szlWindowExt.cx = 1;
+ DC_Attr->szlWindowExt.cy = 1;
+ DC_Attr->szlViewportExt.cx = 1;
+ DC_Attr->szlViewportExt.cy = 1;
+
NewDC->Dc_Attr.crForegroundClr = 0;
-// NewDC->pDc_Attr->ulForegroundClr = 0; // Already Zero
-// NewDC->pDc_Attr->crForegroundClr = 0;
-
+ NewDC->Dc_Attr.ulForegroundClr = 0;
+
+ NewDC->Dc_Attr.ulBackgroundClr = 0xffffff;
NewDC->Dc_Attr.crBackgroundClr = 0xffffff;
-// DC_Attr->ulBackgroundClr = 0xffffff;
-// DC_Attr->crBackgroundClr = 0xffffff;
+ DC_Attr->ulBackgroundClr = 0xffffff;
+ DC_Attr->crBackgroundClr = 0xffffff;
NewDC->Dc_Attr.hlfntNew = NtGdiGetStockObject(SYSTEM_FONT);
+ DC_Attr->hlfntNew = NewDC->Dc_Attr.hlfntNew; // It's a service to the user.
TextIntRealizeFont(NewDC->Dc_Attr.hlfntNew);
-// DC_Attr->hlfntNew = NtGdiGetStockObject(SYSTEM_FONT);
NewDC->w.hPalette = NtGdiGetStockObject(DEFAULT_PALETTE);
@@ -2475,7 +2473,7 @@
VOID FASTCALL
DC_FreeDC(HDC DCToFree)
{
-#if 0
+//#if 0
KeEnterCriticalRegion();
{
INT Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)DCToFree);
@@ -2495,7 +2493,7 @@
}
}
KeLeaveCriticalRegion();
-#endif
+//#endif
if (!GDIOBJ_FreeObj(GdiHandleTable, DCToFree, GDI_OBJECT_TYPE_DC))
{
DPRINT("DC_FreeDC failed\n");
Copied: trunk/reactos/subsystems/win32/win32k/objects/dcutil.c (from r28441,
trunk/reactos/subsystems/win32/win32k/objects/font.c)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/font.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dcutil.c Tue Aug 21 09:01:00 2007
@@ -1,2 +1,47 @@
-/* EMPTY FOR NOW */
-/* Hope I didn't delete existing defs!! Check CVS version of this file.. */
+
+#include <w32k.h>
+
+#define NDEBUG
+#include <debug.h>
+
+
+BOOL
+FASTCALL
+DCU_UpdateUserXForms(PDC pDC, ULONG uMask)
+{
+ PDC_ATTR DC_Attr = pDC->pDc_Attr;
+
+ if (!uMask) return FALSE;
+
+ if (!DC_Attr) return FALSE;
+ else
+ {
+ NTSTATUS Status = STATUS_SUCCESS;
+ _SEH_TRY
+ {
+ ProbeForWrite(DC_Attr,
+ sizeof(DC_ATTR),
+ 1);
+ if (uMask & WORLD_XFORM_CHANGED)
+ XForm2MatrixS( &DC_Attr->mxWorldToDevice, &pDC->w.xformWorld2Vport);
+
+ if (uMask & DEVICE_TO_WORLD_INVALID)
+ XForm2MatrixS( &DC_Attr->mxDevicetoWorld, &pDC->w.xformVport2World);
+
+ if (uMask & WORLD_TO_PAGE_IDENTITY)
+ XForm2MatrixS( &DC_Attr->mxWorldToPage, &pDC->w.xformWorld2Wnd);
+ }
+ _SEH_HANDLE
+ {
+ Status = _SEH_GetExceptionCode();
+ }
+ _SEH_END;
+ if(!NT_SUCCESS(Status))
+ {
+ SetLastNtError(Status);
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
Modified: trunk/reactos/subsystems/win32/win32k/objects/path.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/path.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/path.c Tue Aug 21 09:01:00 2007
@@ -424,7 +424,7 @@
* tests show that resetting the graphics mode to GM_COMPATIBLE does
* not reset the world transform.
*/
- NtGdiGetWorldTransform( dc->hSelf, &xform );
+ NtGdiGetTransform( dc->hSelf, GdiWorldSpaceToPageSpace, &xform );
/* Set MM_TEXT */
NtGdiSetMapMode( dc->hSelf, MM_TEXT );
Modified: trunk/reactos/subsystems/win32/win32k/w32ksvc.db
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/w3…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/w32ksvc.db (original)
+++ trunk/reactos/subsystems/win32/win32k/w32ksvc.db Tue Aug 21 09:01:00 2007
@@ -214,7 +214,7 @@
NtGdiGetTextExtentExW 8
NtGdiGetTextFaceW 4
NtGdiGetTextMetricsW 3
-# NtGdiGetTransform 3
+NtGdiGetTransform 3
# NtGdiGetUFI 6
# NtGdiGetEmbUFI 7
# NtGdiGetUFIPathname 10
@@ -806,7 +806,6 @@
NtGdiGetTextAlign 1
NtGdiGetTextColor 1
NtGdiGetTextExtentPoint32 4
-NtGdiGetWorldTransform 2
NtGdiMoveToEx 4
NtGdiOffsetViewportOrgEx 4
NtGdiOffsetWindowOrgEx 4
Modified: trunk/reactos/subsystems/win32/win32k/win32k.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/wi…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/win32k.rbuild (original)
+++ trunk/reactos/subsystems/win32/win32k/win32k.rbuild Tue Aug 21 09:01:00 2007
@@ -140,6 +140,7 @@
<file>color.c</file>
<file>coord.c</file>
<file>dc.c</file>
+ <file>dcutil.c</file>
<file>dibobj.c</file>
<file>fillshap.c</file>
<file>gdiobj.c</file>