[ros-diffs] [jimtabor] 28442: - 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.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Tue Aug 21 07:01:00 CEST 2007


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?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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 at 12
 GetTextMetricsA at 8
 GetTextMetricsW at 8
-GetTransform at 12
+GetTransform at 12=NtGdiGetTransform at 12
 GetViewportExtEx at 8
 GetViewportOrgEx at 8
 GetWinMetaFileBits at 20
 GetWindowExtEx at 8
 GetWindowOrgEx at 8
-GetWorldTransform at 8=NtGdiGetWorldTransform at 8
+GetWorldTransform at 8
 HT_Get8BPPFormatPalette at 16
 HT_Get8BPPMaskPalette at 24
 IntersectClipRect at 20=NtGdiIntersectClipRect at 20

Modified: trunk/reactos/dll/win32/gdi32/misc/stubs.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/misc/stubs.c?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/coord.c?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/ntgdibad.h?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/include/dc.h?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/objects/coord.c?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/objects/dc.c?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/objects/dcutil.c?p2=trunk/reactos/subsystems/win32/win32k/objects/dcutil.c&p1=trunk/reactos/subsystems/win32/win32k/objects/font.c&r1=28441&r2=28442&rev=28442&view=diff
==============================================================================
--- 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/objects/path.c?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/w32ksvc.db?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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/win32k.rbuild?rev=28442&r1=28441&r2=28442&view=diff
==============================================================================
--- 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>




More information about the Ros-diffs mailing list