Commit in reactos on win32k_user_rewrite
include/win32k/dc.h+25-171.37.4.2 -> 1.37.4.3
              /ntuser.h+39-21.137.4.5 -> 1.137.4.6
lib/user32/misc/stubs.c+1-431.65.4.1 -> 1.65.4.2
ntoskrnl/ex/win32k.c-21.18 -> 1.18.2.1
ntoskrnl/include/internal/ex.h+29-531.39.2.2.2.4 -> 1.39.2.2.2.5
subsys/win32k/eng/mouse.c+149-2611.76.2.4 -> 1.76.2.5
subsys/win32k/include/object.h+1-11.24.4.3 -> 1.24.4.4
subsys/win32k/main/dllmain.c+5-1071.76.12.5 -> 1.76.12.6
subsys/win32k/misc/error.c+2-11.7.14.1 -> 1.7.14.2
subsys/win32k/objects/bitmaps.c+4-21.79.2.2 -> 1.79.2.3
                     /dc.c+2-111.144.2.4 -> 1.144.2.5
                     /gdiobj.c+2-21.71.4.5 -> 1.71.4.6
subsys/win32k/tests/setup.c+6added 1.2.2.1
                   /stubs.tst[empty]added 1.1.4.1
                   /.cvsignore+3-11.1 -> 1.1.12.1
                   /makefile+4-31.2 -> 1.2.12.1
subsys/win32k/tests/tests/eng-mem-1.c+8-81.1.12.1 -> 1.1.12.2
subsys/win32k/win32k.rc+6-371.6 -> 1.6.30.1
+286-551
2 added + 16 modified, total 18 files
remove more hacks

reactos/include/win32k
dc.h 1.37.4.2 -> 1.37.4.3
diff -u -r1.37.4.2 -r1.37.4.3
--- dc.h	14 Sep 2004 01:00:41 -0000	1.37.4.2
+++ dc.h	23 Nov 2004 01:57:20 -0000	1.37.4.3
@@ -108,7 +108,27 @@
   WIN_DC_INFO  w;
 } DC, *PDC;
 
-typedef struct
+typedef struct _GDIPOINTER
+{
+  BOOL Enabled;
+  POINTL Pos;
+  SIZEL Size;
+  POINTL HotSpot;
+  
+  PGD_MOVEPOINTER MovePointer;
+  
+  XLATEOBJ *XlateObject;
+  HSURF ColorSurface;
+  HSURF MaskSurface;
+  HSURF SaveSurface;
+
+  ULONG Status;
+  
+  BOOL SafetySwitch;
+  UINT SafetyRemoveCount;
+} GDIPOINTER, *PGDIPOINTER;
+
+typedef struct _GDIDEVICE
 {
   HANDLE Handle;
   DHPDEV PDev;
@@ -119,22 +139,10 @@
   DRIVER_FUNCTIONS DriverFunctions;
   PFILE_OBJECT VideoFileObject;
 
-  PGD_MOVEPOINTER MovePointer;
-
-  struct {
-     BOOL Enable;
-     LONG Column;
-     LONG Row;
-     LONG Width;
-     LONG Height;
-  } PointerAttributes;
-  XLATEOBJ *PointerXlateObject;
-  HSURF PointerColorSurface;
-  HSURF PointerMaskSurface;
-  HSURF PointerSaveSurface;
-  POINTL PointerHotSpot;
-  ULONG PointerStatus;
-} GDIDEVICE;
+  GDIPOINTER Pointer;
+  
+  BOOL IsPrimarySurface;
+} GDIDEVICE, *PGDIDEVICE;
 
 /*  Internal functions  */
 

reactos/include/win32k
ntuser.h 1.137.4.5 -> 1.137.4.6
diff -u -r1.137.4.5 -r1.137.4.6
--- ntuser.h	12 Sep 2004 19:21:05 -0000	1.137.4.5
+++ ntuser.h	23 Nov 2004 01:57:20 -0000	1.137.4.6
@@ -493,13 +493,26 @@
   PDISPLAY_DEVICE lpDisplayDevice, /* device information */
   DWORD dwFlags ); /* reserved */
 
-BOOL
+/*BOOL
 STDCALL
 NtUserEnumDisplayMonitors (
   HDC hdc,
   LPCRECT lprcClip,
   MONITORENUMPROC lpfnEnum,
-  LPARAM dwData );
+  LPARAM dwData );*/
+
+#define MONITORINFOF_PRIMARY 1
+#define MONITOR_DEFAULTTONULL 0
+#define MONITOR_DEFAULTTOPRIMARY 1
+#define MONITOR_DEFAULTTONEAREST 2
+INT
+STDCALL
+NtUserEnumDisplayMonitors(
+  OPTIONAL IN HDC hDC,
+  OPTIONAL IN LPCRECT pRect,
+  OPTIONAL OUT HMONITOR *hMonitorList,
+  OPTIONAL OUT LPRECT monitorRectList,
+  OPTIONAL IN DWORD listSize );
 
 BOOL
 STDCALL
@@ -766,6 +779,12 @@
   UINT wMsgFilterMin,
   UINT wMsgFilterMax);
 
+BOOL
+STDCALL
+NtUserGetMonitorInfo(
+  IN HMONITOR hMonitor,
+  OUT LPMONITORINFO pMonitorInfo);
+
 DWORD
 STDCALL
 NtUserGetMouseMovePointsEx(
@@ -1005,6 +1024,24 @@
   DWORD Unknown0,
   DWORD Unknown1);
 
+HMONITOR
+STDCALL
+NtUserMonitorFromPoint(
+  IN POINT point,
+  IN DWORD dwFlags);
+
+HMONITOR
+STDCALL
+NtUserMonitorFromRect(
+  IN LPCRECT pRect,
+  IN DWORD dwFlags);
+
+HMONITOR
+STDCALL
+NtUserMonitorFromWindow(
+  IN HWND hWnd,
+  IN DWORD dwFlags);
+
 BOOL
 STDCALL
 NtUserMoveWindow(      

reactos/lib/user32/misc
stubs.c 1.65.4.1 -> 1.65.4.2
diff -u -r1.65.4.1 -r1.65.4.2
--- stubs.c	12 Sep 2004 21:23:25 -0000	1.65.4.1
+++ stubs.c	23 Nov 2004 01:57:21 -0000	1.65.4.2
@@ -1,4 +1,4 @@
-/* $Id: stubs.c,v 1.65.4.1 2004/09/12 21:23:25 weiden Exp $
+/* $Id: stubs.c,v 1.65.4.2 2004/11/23 01:57:21 weiden Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS user32.dll
@@ -112,48 +112,6 @@
 /*
  * @unimplemented
  */
-HMONITOR
-STDCALL
-MonitorFromPoint(
-  POINT pt,
-  DWORD dwFlags)
-{
-  UNIMPLEMENTED;
-  return (HMONITOR)0;
-}
-
-
-/*
- * @unimplemented
- */
-HMONITOR
-STDCALL
-MonitorFromRect(
-  LPRECT lprc,
-  DWORD dwFlags)
-{
-  UNIMPLEMENTED;
-  return (HMONITOR)0;
-}
-
-
-/*
- * @unimplemented
- */
-HMONITOR
-STDCALL
-MonitorFromWindow(
-  HWND hwnd,
-  DWORD dwFlags)
-{
-  UNIMPLEMENTED;
-  return (HMONITOR)0;
-}
-
-
-/*
- * @unimplemented
- */
 DWORD
 STDCALL
 MsgWaitForMultipleObjects(

reactos/ntoskrnl/ex
win32k.c 1.18 -> 1.18.2.1
diff -u -r1.18 -r1.18.2.1
--- win32k.c	20 Nov 2004 17:55:41 -0000	1.18
+++ win32k.c	23 Nov 2004 01:57:21 -0000	1.18.2.1
@@ -122,8 +122,6 @@
     return Status;
   }
 
-  WinSta->SystemMenuTemplate = (HANDLE)0;
-
   DPRINT("Window station successfully created. Name (%wZ)\n", &WinSta->Name);
 
   return STATUS_SUCCESS;

reactos/ntoskrnl/include/internal
ex.h 1.39.2.2.2.4 -> 1.39.2.2.2.5
diff -u -r1.39.2.2.2.4 -r1.39.2.2.2.5
--- ex.h	29 Sep 2004 10:27:02 -0000	1.39.2.2.2.4
+++ ex.h	23 Nov 2004 01:57:21 -0000	1.39.2.2.2.5
@@ -8,63 +8,35 @@
 #define NTOS_MODE_KERNEL
 #include <ntos.h>
 
+#ifndef __WIN32K__
+typedef PVOID PUSER_HANDLE_TABLE;
+#endif
+
 typedef struct _WINSTATION_OBJECT
 {
-  CSHORT Type;
-  CSHORT Size;
-  KSPIN_LOCK Lock;
   UNICODE_STRING Name;
+  KSPIN_LOCK Lock;
+
+  /* desktops */
   LIST_ENTRY DesktopListHead;
+  struct _DESKTOP_OBJECT* ActiveDesktop;
+
+  /* atom table */
   PRTL_ATOM_TABLE AtomTable;
-  UINT CaretBlinkRate;
-#ifdef __WIN32K__
-  PSYSTEM_CURSORINFO SystemCursor;
+  
+  /* user object handle table */
   PUSER_HANDLE_TABLE HandleTable;
-  PWINDOW_OBJECT ShellWindow;
-  PWINDOW_OBJECT ShellListView;
-  PMENU_OBJECT SystemMenuTemplate;
-#else
-  PVOID SystemCursor;
-  PVOID HandleTable;
-  PVOID ShellWindow;
-  PVOID ShellListView;
-  PVOID SystemMenuTemplate;
-#endif
-  ULONG Flags;
-  struct _DESKTOP_OBJECT* InputDesktop;
-  /* FIXME: Clipboard */
-  LIST_ENTRY HotKeyListHead;
-  FAST_MUTEX HotKeyListLock;
 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
 
 typedef struct _DESKTOP_OBJECT
 {
-  CSHORT Type;
-  CSHORT Size;
-  LIST_ENTRY ListEntry;
-  KSPIN_LOCK Lock;
   UNICODE_STRING Name;
-  /* Pointer to the associated window station. */
+  KSPIN_LOCK Lock;
+  
+  /* link to the desktop list */
+  LIST_ENTRY ListEntry;
+  /* desktop owner */
   struct _WINSTATION_OBJECT *WindowStation;
-#ifdef __WIN32K__
-  /* Pointer to the active queue. */
-  PUSER_MESSAGE_QUEUE ActiveMessageQueue;
-  /* Rectangle of the work area */
-  RECT WorkArea;
-  /* Pointer of the desktop window. */
-  PWINDOW_OBJECT DesktopWindow;
-  PWINDOW_OBJECT PrevActiveWindow;
-#else
-  /* Pointer to the active queue. */
-  PVOID ActiveMessageQueue;
-  /* Rectangle of the work area */
-  LONG WorkArea[4];
-  /* Pointer to the desktop window. */
-  PVOID DesktopWindow;
-  PVOID PrevActiveWindow;
-#endif
-  /* Thread blocking input */
-  PVOID BlockInputThread;
 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
 
 
@@ -76,7 +48,10 @@
 
 /* GLOBAL VARIABLES *********************************************************/
 
-TIME_ZONE_INFORMATION _SystemTimeZoneInfo;
+extern TIME_ZONE_INFORMATION ExpTimeZoneInfo;
+extern LARGE_INTEGER ExpTimeZoneBias;
+extern ULONG ExpTimeZoneId;
+
 extern POBJECT_TYPE ExEventPairObjectType;
 
 
@@ -85,13 +60,13 @@
 VOID
 ExpWin32kInit(VOID);
 
-VOID 
-ExInit2 (VOID);
 VOID
-ExInit3 (VOID);
-VOID 
-ExInitTimeZoneInfo (VOID);
-VOID 
+ExInit2(VOID);
+VOID
+ExInit3(VOID);
+VOID
+ExpInitTimeZoneInfo(VOID);
+VOID
 ExInitializeWorkerThreads(VOID);
 VOID
 ExpInitLookasideLists(VOID);
@@ -111,6 +86,7 @@
 LONGLONG
 FASTCALL
 ExfpInterlockedExchange64(LONGLONG volatile * Destination,
-	PLONGLONG Exchange);
+                          PLONGLONG Exchange);
+
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */

reactos/subsys/win32k/eng
mouse.c 1.76.2.4 -> 1.76.2.5
diff -u -r1.76.2.4 -r1.76.2.5
--- mouse.c	14 Sep 2004 01:00:42 -0000	1.76.2.4
+++ mouse.c	23 Nov 2004 01:57:21 -0000	1.76.2.5
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: mouse.c,v 1.76.2.4 2004/09/14 01:00:42 weiden Exp $
+/* $Id: mouse.c,v 1.76.2.5 2004/11/23 01:57:21 weiden Exp $
  *
  * PROJECT:          ReactOS kernel
  * PURPOSE:          Mouse
@@ -30,65 +30,6 @@
 
 /* FUNCTIONS *****************************************************************/
 
-BOOL INTERNAL_CALL
-IntIsPrimarySurface(SURFOBJ *SurfObj);
-
-VOID INTERNAL_CALL
-EnableMouse(HDC hDisplayDC)
-{
-  PDC dc;
-  BITMAPOBJ *BitmapObj;
-  GDIDEVICE *GdiDev;
-  PSYSTEM_CURSORINFO CurInfo = IntGetSysCursorInfo(InputWindowStation);
-
-  if( hDisplayDC && InputWindowStation)
-  {
-    if(!IntGetWindowStationObject(InputWindowStation))
-    {
-       CurInfo->Enabled = FALSE;
-       return;
-    }
-    
-    dc = DC_LockDc(hDisplayDC);
-    /* FIXME - dc can be NULL!! Don't assert here! */
-    ASSERT(dc);
-    BitmapObj = BITMAPOBJ_LockBitmap(dc->w.hBitmap);
-    /* FIXME - BitmapObj can be NULL!!!! Don't assert here! */
-    ASSERT(BitmapObj);
-    
-    /* Move the cursor to the screen center */
-    DPRINT("Setting Cursor up at 0x%x, 0x%x\n", SurfObj->sizlBitmap.cx / 2, SurfObj->sizlBitmap.cy / 2);
-    ExAcquireFastMutex(&CurInfo->CursorMutex);
-    CurInfo->x = BitmapObj->SurfObj.sizlBitmap.cx / 2;
-    CurInfo->y = BitmapObj->SurfObj.sizlBitmap.cy / 2;
-    ExReleaseFastMutex(&CurInfo->CursorMutex);
-    
-    GdiDev = GDIDEV(&BitmapObj->SurfObj);
-    BITMAPOBJ_UnlockBitmap(BitmapObj);
-    DC_UnlockDc( dc );
-    
-    IntSetCursor(NULL, TRUE);
-    
-    CurInfo->Enabled = (SPS_ACCEPT_EXCLUDE == GdiDev->PointerStatus ||
-                        SPS_ACCEPT_NOEXCLUDE == GdiDev->PointerStatus);
-
-    IntLoadDefaultCursors();
-    
-    ObDereferenceObject(InputWindowStation);
-  }
-  else
-  {
-    if(IntGetWindowStationObject(InputWindowStation))
-    {
-       IntSetCursor(NULL, TRUE);
-       CurInfo->Enabled = FALSE;
-       CurInfo->CursorClipInfo.IsClipped = FALSE;
-       ObDereferenceObject(InputWindowStation);
-       return;
-    }
-  }
-}
-
 INT INTERNAL_CALL
 MouseSafetyOnDrawStart(SURFOBJ *SurfObj, LONG HazardX1,
 		       LONG HazardY1, LONG HazardX2, LONG HazardY2)
@@ -98,45 +39,19 @@
  */
 {
   LONG tmp;
-  PSYSTEM_CURSORINFO CurInfo;
-  BOOL MouseEnabled = FALSE;
-  PCURSOR_OBJECT Cursor;
-
-
-  /* Mouse is not allowed to move if GDI is busy drawing */
-   
-  if(IntGetWindowStationObject(InputWindowStation))
-  {
-    CurInfo = IntGetSysCursorInfo(InputWindowStation);
-    
-    MouseEnabled = CurInfo->Enabled && CurInfo->ShowingCursor;
-  }
-  else
-    return FALSE;
+  GDIDEVICE *ppdev;
+  GDIPOINTER *pgp;
+  
+  ASSERT(SurfObj != NULL);
+  
+  ppdev = GDIDEV(SurfObj);
+  pgp = &ppdev->Pointer;
     
-  if (SurfObj == NULL)
+  if (!ppdev->IsPrimarySurface ||
+      SPS_ACCEPT_NOEXCLUDE == pgp->Status)
     {
-      ObDereferenceObject(InputWindowStation);
       return(FALSE);
     }
-  if (!IntIsPrimarySurface(SurfObj) || MouseEnabled == FALSE)
-    {
-      ObDereferenceObject(InputWindowStation);
-      return(FALSE);
-    }
-
-  if (SPS_ACCEPT_NOEXCLUDE == GDIDEV(SurfObj)->PointerStatus)
-    {
-      /* Hardware cursor, no need to remove it */
-      ObDereferenceObject(InputWindowStation);
-      return(FALSE);
-    }
-  
-  if(!(Cursor = CurInfo->CurrentCursorObject))
-  {
-    ObDereferenceObject(InputWindowStation);
-    return(FALSE);
-  }
 
   if (HazardX1 > HazardX2)
     {
@@ -147,101 +62,59 @@
       tmp = HazardY2; HazardY2 = HazardY1; HazardY1 = tmp;
     }
 
-  if (CurInfo->PointerRectRight >= HazardX1
-      && CurInfo->PointerRectLeft <= HazardX2
-      && CurInfo->PointerRectBottom  >= HazardY1
-      && CurInfo->PointerRectTop <= HazardY2)
+  if (pgp->Pos.x + pgp->Size.cx >= HazardX1
+      && pgp->Pos.x <= HazardX2
+      && pgp->Pos.y + pgp->Size.cy >= HazardY1
+      && pgp->Pos.y <= HazardY2)
     {
-      /* Mouse is not allowed to move if GDI is busy drawing */
-      ExAcquireFastMutex(&CurInfo->CursorMutex);
-      if (0 != CurInfo->SafetyRemoveCount++)
+      if (0 != pgp->SafetyRemoveCount++)
         {
-          /* Was already removed */
-          ExReleaseFastMutex(&CurInfo->CursorMutex);
-          ObDereferenceObject(InputWindowStation);
           return FALSE;
         }
-      CurInfo->SafetySwitch = TRUE;
-      if (GDIDEVFUNCS(SurfObj).MovePointer)
-        GDIDEVFUNCS(SurfObj).MovePointer(SurfObj, -1, -1, NULL);
+      pgp->SafetySwitch = TRUE;
+      if (pgp->MovePointer)
+        pgp->MovePointer(SurfObj, -1, -1, NULL);
       else
         EngMovePointer(SurfObj, -1, -1, NULL);
-      ExReleaseFastMutex(&CurInfo->CursorMutex);
     }
     
-  ObDereferenceObject(InputWindowStation);
   return(TRUE);
 }
 
-VOID INTERNAL_CALL
-SetPointerRect(PSYSTEM_CURSORINFO CurInfo, PRECTL PointerRect)
-{
-  CurInfo->PointerRectLeft = PointerRect->left;
-  CurInfo->PointerRectRight = PointerRect->right;
-  CurInfo->PointerRectTop = PointerRect->top;
-  CurInfo->PointerRectBottom = PointerRect->bottom;
-}
-
 INT INTERNAL_CALL
 MouseSafetyOnDrawEnd(SURFOBJ *SurfObj)
 /*
  * FUNCTION: Notify the mouse driver that drawing has finished on a surface.
  */
 {
-  PSYSTEM_CURSORINFO CurInfo;
-  BOOL MouseEnabled = FALSE;
-  RECTL PointerRect;
-    
-  if(IntGetWindowStationObject(InputWindowStation))
-  {
-    CurInfo = IntGetSysCursorInfo(InputWindowStation);
-  }
-  else
-    return FALSE;
-    
-  ExAcquireFastMutex(&CurInfo->CursorMutex);
-  if(SurfObj == NULL)
+  GDIDEVICE *ppdev;
+  GDIPOINTER *pgp;
+  
+  ASSERT(SurfObj != NULL);
+  
+  ppdev = GDIDEV(SurfObj);
+  pgp = &ppdev->Pointer;
+
+  if(!ppdev->IsPrimarySurface ||
+     SPS_ACCEPT_NOEXCLUDE == pgp->Status)
   {
-    ExReleaseFastMutex(&CurInfo->CursorMutex);
-    ObDereferenceObject(InputWindowStation);
     return FALSE;
   }
   
-  MouseEnabled = CurInfo->Enabled && CurInfo->ShowingCursor;
-  if (!IntIsPrimarySurface(SurfObj) || MouseEnabled == FALSE)
-    {
-      ExReleaseFastMutex(&CurInfo->CursorMutex);
-      ObDereferenceObject(InputWindowStation);
-      return(FALSE);
-    }
-
-  if (SPS_ACCEPT_NOEXCLUDE == GDIDEV(SurfObj)->PointerStatus)
-    {
-      /* Hardware cursor, it wasn't removed so need to restore it */
-      ExReleaseFastMutex(&CurInfo->CursorMutex);
-      ObDereferenceObject(InputWindowStation);
-      return(FALSE);
-    }
-  
-  if (CurInfo->SafetySwitch)
+  if (pgp->SafetySwitch)
     {
-      if (1 < CurInfo->SafetyRemoveCount--)
+      if (1 < pgp->SafetyRemoveCount--)
         {
           /* Someone else removed it too, let them restore it */
-          ExReleaseFastMutex(&CurInfo->CursorMutex);
-          ObDereferenceObject(InputWindowStation);
           return FALSE;
         }
-      if (GDIDEVFUNCS(SurfObj).MovePointer)
-        GDIDEVFUNCS(SurfObj).MovePointer(SurfObj, CurInfo->x, CurInfo->y, &PointerRect);
+      if (pgp->MovePointer)
+        pgp->MovePointer(SurfObj, pgp->Pos.x, pgp->Pos.y, NULL);
       else
-        EngMovePointer(SurfObj, CurInfo->x, CurInfo->y, &PointerRect);
-      SetPointerRect(CurInfo, &PointerRect);
-      CurInfo->SafetySwitch = FALSE;
+        EngMovePointer(SurfObj, pgp->Pos.x, pgp->Pos.y, NULL);
+     pgp->SafetySwitch = FALSE;
     }
 
-  ExReleaseFastMutex(&CurInfo->CursorMutex);
-  ObDereferenceObject(InputWindowStation);
   return(TRUE);
 }
 
@@ -250,39 +123,42 @@
 VOID INTERNAL_CALL
 IntHideMousePointer(GDIDEVICE *ppdev, SURFOBJ *DestSurface)
 {
-   if (ppdev->PointerAttributes.Enable == FALSE)
+   GDIPOINTER *pgp;
+   
+   ASSERT(ppdev);
+   ASSERT(DestSurface);
+   
+   pgp = &ppdev->Pointer;
+   
+   if (!pgp->Enabled ||
+       pgp->Pos.x + pgp->HotSpot.x == -1)
    {
       return;
    }
 
-   ppdev->PointerAttributes.Enable = FALSE;
-
-   if (ppdev->PointerAttributes.Column + ppdev->PointerHotSpot.x == -1)
-   {
-      return;
-   }
+   pgp->Enabled = FALSE;
 
-   if (ppdev->PointerSaveSurface != NULL)
+   if (pgp->SaveSurface != NULL)
    {
       RECTL DestRect;
       POINTL SrcPoint;
       SURFOBJ *SaveSurface;
       SURFOBJ *MaskSurface;
 
-      DestRect.left = max(ppdev->PointerAttributes.Column, 0);
-      DestRect.top = max(ppdev->PointerAttributes.Row, 0);
+      DestRect.left = max(pgp->Pos.x, 0);
+      DestRect.top = max(pgp->Pos.y, 0);
       DestRect.right = min(
-         ppdev->PointerAttributes.Column + ppdev->PointerAttributes.Width,
+         pgp->Pos.x + pgp->Size.cx,
          DestSurface->sizlBitmap.cx);
       DestRect.bottom = min(
-         ppdev->PointerAttributes.Row + ppdev->PointerAttributes.Height,
+         pgp->Pos.y + pgp->Size.cy,
          DestSurface->sizlBitmap.cy);
 
-      SrcPoint.x = max(-ppdev->PointerAttributes.Column, 0);
-      SrcPoint.y = max(-ppdev->PointerAttributes.Row, 0);
+      SrcPoint.x = max(-pgp->Pos.x, 0);
+      SrcPoint.y = max(-pgp->Pos.y, 0);
 
-      SaveSurface = EngLockSurface(ppdev->PointerSaveSurface);
-      MaskSurface = EngLockSurface(ppdev->PointerMaskSurface);
+      SaveSurface = EngLockSurface(pgp->SaveSurface);
+      MaskSurface = EngLockSurface(pgp->MaskSurface);
       EngBitBlt(DestSurface, SaveSurface, MaskSurface, NULL, NULL,
                 &DestRect, &SrcPoint, &SrcPoint, NULL, NULL, SRCCOPY);
       EngUnlockSurface(MaskSurface);
@@ -293,36 +169,43 @@
 VOID INTERNAL_CALL
 IntShowMousePointer(GDIDEVICE *ppdev, SURFOBJ *DestSurface)
 {
-   if (ppdev->PointerAttributes.Enable == TRUE)
+   GDIPOINTER *pgp;
+
+   ASSERT(ppdev);
+   ASSERT(DestSurface);
+
+   pgp = &ppdev->Pointer;
+   
+   if (pgp->Enabled)
    {
       return;
    }
 
-   ppdev->PointerAttributes.Enable = TRUE;
+   pgp->Enabled = TRUE;
 
    /*
     * Copy the pixels under the cursor to temporary surface.
     */
    
-   if (ppdev->PointerSaveSurface != NULL)
+   if (pgp->SaveSurface != NULL)
    {
       RECTL DestRect;
       POINTL SrcPoint;
       SURFOBJ *SaveSurface;
 
-      SrcPoint.x = max(ppdev->PointerAttributes.Column, 0);
-      SrcPoint.y = max(ppdev->PointerAttributes.Row, 0);
+      SrcPoint.x = max(pgp->Pos.x, 0);
+      SrcPoint.y = max(pgp->Pos.y, 0);
 
-      DestRect.left = SrcPoint.x - ppdev->PointerAttributes.Column;
-      DestRect.top = SrcPoint.y - ppdev->PointerAttributes.Row;
+      DestRect.left = SrcPoint.x - pgp->Pos.x;
+      DestRect.top = SrcPoint.y - pgp->Pos.y;
       DestRect.right = min(
-         ppdev->PointerAttributes.Width,
-         DestSurface->sizlBitmap.cx - ppdev->PointerAttributes.Column);
+         pgp->Size.cx,
+         DestSurface->sizlBitmap.cx - pgp->Pos.x);
       DestRect.bottom = min(
-         ppdev->PointerAttributes.Height,
-         DestSurface->sizlBitmap.cy - ppdev->PointerAttributes.Row);
+         pgp->Size.cy,
+         DestSurface->sizlBitmap.cy - pgp->Pos.y);
 
-      SaveSurface = EngLockSurface(ppdev->PointerSaveSurface);
+      SaveSurface = EngLockSurface(pgp->SaveSurface);
       EngBitBlt(SaveSurface, DestSurface, NULL, NULL, NULL,
                 &DestRect, &SrcPoint, NULL, NULL, NULL, SRCCOPY);
       EngUnlockSurface(SaveSurface);
@@ -338,32 +221,32 @@
       SURFOBJ *ColorSurf;
       SURFOBJ *MaskSurf;
 
-      DestRect.left = max(ppdev->PointerAttributes.Column, 0);
-      DestRect.top = max(ppdev->PointerAttributes.Row, 0);
+      DestRect.left = max(pgp->Pos.x, 0);
+      DestRect.top = max(pgp->Pos.y, 0);
       DestRect.right = min(
-         ppdev->PointerAttributes.Column + ppdev->PointerAttributes.Width,
+         pgp->Pos.x + pgp->Size.cx,
          DestSurface->sizlBitmap.cx);
       DestRect.bottom = min(
-         ppdev->PointerAttributes.Row + ppdev->PointerAttributes.Height,
+         pgp->Pos.y + pgp->Size.cy,
          DestSurface->sizlBitmap.cy);
 
-      SrcPoint.x = max(-ppdev->PointerAttributes.Column, 0);
-      SrcPoint.y = max(-ppdev->PointerAttributes.Row, 0);
+      SrcPoint.x = max(-pgp->Pos.x, 0);
+      SrcPoint.y = max(-pgp->Pos.y, 0);
 
-      MaskSurf = EngLockSurface(ppdev->PointerMaskSurface);
-      if (ppdev->PointerColorSurface != NULL)
+      MaskSurf = EngLockSurface(pgp->MaskSurface);
+      if (pgp->ColorSurface != NULL)
       {
-         ColorSurf = EngLockSurface(ppdev->PointerColorSurface);
-         EngBitBlt(DestSurface, ColorSurf, MaskSurf, NULL, ppdev->PointerXlateObject,
+         ColorSurf = EngLockSurface(pgp->ColorSurface);
+         EngBitBlt(DestSurface, ColorSurf, MaskSurf, NULL, pgp->XlateObject,
                    &DestRect, &SrcPoint, &SrcPoint, NULL, NULL, 0xAACC);
          EngUnlockSurface(ColorSurf);
       }
       else
       {
-         EngBitBlt(DestSurface, MaskSurf, NULL, NULL, ppdev->PointerXlateObject,
+         EngBitBlt(DestSurface, MaskSurf, NULL, NULL, pgp->XlateObject,
                    &DestRect, &SrcPoint, NULL, NULL, NULL, SRCAND);
-         SrcPoint.y += ppdev->PointerAttributes.Height;
-         EngBitBlt(DestSurface, MaskSurf, NULL, NULL, ppdev->PointerXlateObject,
+         SrcPoint.y += pgp->Size.cy;
+         EngBitBlt(DestSurface, MaskSurf, NULL, NULL, pgp->XlateObject,
                    &DestRect, &SrcPoint, NULL, NULL, NULL, SRCINVERT);
       }
       EngUnlockSurface(MaskSurf);
@@ -387,45 +270,51 @@
    IN RECTL *prcl,
    IN FLONG fl)
 {
-   GDIDEVICE *ppdev = (GDIDEVICE *)pso->hdev;
+   GDIDEVICE *ppdev;
    SURFOBJ *TempSurfObj;
+   GDIPOINTER *pgp;
+
+   ASSERT(pso);
+
+   ppdev = GDIDEV(pso);
+   pgp = &ppdev->Pointer;
    
    IntHideMousePointer(ppdev, pso);
 
-   if (ppdev->PointerColorSurface != NULL)
+   if (pgp->ColorSurface != NULL)
    {
       /* FIXME: Is this really needed? */
-      TempSurfObj = EngLockSurface(ppdev->PointerColorSurface);
+      TempSurfObj = EngLockSurface(pgp->ColorSurface);
       EngFreeMem(TempSurfObj->pvBits);
       TempSurfObj->pvBits = 0;
       EngUnlockSurface(TempSurfObj);
 
-      EngDeleteSurface(ppdev->PointerColorSurface);
-      ppdev->PointerMaskSurface = NULL;
+      EngDeleteSurface(pgp->ColorSurface);
+      pgp->MaskSurface = NULL;
    }
 
-   if (ppdev->PointerMaskSurface != NULL)
+   if (pgp->MaskSurface != NULL)
    {
       /* FIXME: Is this really needed? */
-      TempSurfObj = EngLockSurface(ppdev->PointerMaskSurface);
+      TempSurfObj = EngLockSurface(pgp->MaskSurface);
       EngFreeMem(TempSurfObj->pvBits);
       TempSurfObj->pvBits = 0;
       EngUnlockSurface(TempSurfObj);
 
-      EngDeleteSurface(ppdev->PointerMaskSurface);
-      ppdev->PointerMaskSurface = NULL;
+      EngDeleteSurface(pgp->MaskSurface);
+      pgp->MaskSurface = NULL;
    }
 
-   if (ppdev->PointerSaveSurface != NULL)
+   if (pgp->SaveSurface != NULL)
    {
-      EngDeleteSurface(ppdev->PointerSaveSurface);
-      ppdev->PointerSaveSurface = NULL;
+      EngDeleteSurface(pgp->SaveSurface);
+      pgp->SaveSurface = NULL;
    }
 
-   if (ppdev->PointerXlateObject != NULL)
+   if (pgp->XlateObject != NULL)
    {
-      EngDeleteXlate(ppdev->PointerXlateObject);
-      ppdev->PointerXlateObject = NULL;
+      EngDeleteXlate(pgp->XlateObject);
+      pgp->XlateObject = NULL;
    }
 
    /*
@@ -437,51 +326,48 @@
       return SPS_ACCEPT_NOEXCLUDE;
    }
 
-   ppdev->PointerHotSpot.x = xHot;
-   ppdev->PointerHotSpot.y = yHot;
+   pgp->HotSpot.x = xHot;
+   pgp->HotSpot.y = yHot;
 
-   ppdev->PointerAttributes.Column = x - xHot;
-   ppdev->PointerAttributes.Row = y - yHot;
-   ppdev->PointerAttributes.Width = abs(psoMask->lDelta) << 3;
-   ppdev->PointerAttributes.Height = (psoMask->cjBits / abs(psoMask->lDelta)) >> 1;
+   pgp->Pos.x = x - xHot;
+   pgp->Pos.y = y - yHot;
+   pgp->Size.cx = abs(psoMask->lDelta) << 3;
+   pgp->Size.cy = (psoMask->cjBits / abs(psoMask->lDelta)) >> 1;
 
    if (prcl != NULL)
    {
-      prcl->left = ppdev->PointerAttributes.Column;
-      prcl->top = ppdev->PointerAttributes.Row;
-      prcl->right = prcl->left + ppdev->PointerAttributes.Width;
-      prcl->bottom = prcl->top + ppdev->PointerAttributes.Height;
+      prcl->left = pgp->Pos.x;
+      prcl->top = pgp->Pos.y;
+      prcl->right = pgp->Pos.x + pgp->Size.cx;
+      prcl->bottom = pgp->Pos.y + pgp->Size.cy;
    }
 
    if (psoColor != NULL)
    {
-      SIZEL Size;
       PBYTE Bits;
 
-      Size.cx = ppdev->PointerAttributes.Width;
-      Size.cy = ppdev->PointerAttributes.Height;
       Bits = EngAllocMem(0, psoColor->cjBits, TAG_MOUSE);
       memcpy(Bits, psoColor->pvBits, psoColor->cjBits);
 
-      ppdev->PointerColorSurface = (HSURF)EngCreateBitmap(Size,
+      pgp->ColorSurface = (HSURF)EngCreateBitmap(pgp->Size,
          psoColor->lDelta, psoColor->iBitmapFormat,
          psoColor->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits);
    }
    else
    {
-      ppdev->PointerColorSurface = NULL;
+      pgp->ColorSurface = NULL;
    }
 
    {
       SIZEL Size;
       PBYTE Bits;
 
-      Size.cx = ppdev->PointerAttributes.Width;
-      Size.cy = ppdev->PointerAttributes.Height << 1;
+      Size.cx = pgp->Size.cx;
+      Size.cy = pgp->Size.cy << 1;
       Bits = EngAllocMem(0, psoMask->cjBits, TAG_MOUSE);
       memcpy(Bits, psoMask->pvBits, psoMask->cjBits);
 
-      ppdev->PointerMaskSurface = (HSURF)EngCreateBitmap(Size,
+      pgp->MaskSurface = (HSURF)EngCreateBitmap(Size,
          psoMask->lDelta, psoMask->iBitmapFormat,
          psoMask->lDelta < 0 ? 0 : BMF_TOPDOWN, Bits);
    }
@@ -495,21 +381,20 @@
    {
       HPALETTE BWPalette, DestPalette;
       ULONG BWColors[] = {0, 0xFFFFFF};
-      PDC Dc;
 
       BWPalette = EngCreatePalette(PAL_INDEXED, sizeof(BWColors) / sizeof(ULONG),
          BWColors, 0, 0, 0);
-      Dc = DC_LockDc(IntGetScreenDC());
-      /* FIXME - Handle DC == NULL!!!!! */
-      DestPalette = Dc->w.hPalette;
-      DC_UnlockDc(Dc);
-      ppdev->PointerXlateObject = IntEngCreateXlate(0, PAL_INDEXED,
+
+      /* FIXME - where to get the palette from?
+         DestPalette = Dc->w.hPalette; */
+      DestPalette = 0;
+      pgp->XlateObject = IntEngCreateXlate(0, PAL_INDEXED,
          DestPalette, BWPalette);
       EngDeletePalette(BWPalette);
    }
    else
    {
-      ppdev->PointerXlateObject = pxlo;
+      pgp->XlateObject = pxlo;
    }
 
    /*
@@ -517,39 +402,35 @@
     */
 
    {
-      SIZEL Size;
       LONG lDelta;
 
-      Size.cx = ppdev->PointerAttributes.Width;
-      Size.cy = ppdev->PointerAttributes.Height;
-
       switch (pso->iBitmapFormat)
       {
          case BMF_1BPP:
-	   lDelta = Size.cx >> 3;
+	   lDelta = pgp->Size.cx >> 3;
 	   break;
          case BMF_4BPP:
-	   lDelta = Size.cx >> 1;
+	   lDelta = pgp->Size.cx >> 1;
 	   break;
          case BMF_8BPP:
-	   lDelta = Size.cx;
+	   lDelta = pgp->Size.cx;
 	   break;
          case BMF_16BPP:
-	   lDelta = Size.cx << 1;
+	   lDelta = pgp->Size.cx << 1;
 	   break;
          case BMF_24BPP:
-	   lDelta = Size.cx * 3;
+	   lDelta = pgp->Size.cx * 3;
 	   break; 
          case BMF_32BPP:
-	   lDelta = Size.cx << 2;
+	   lDelta = pgp->Size.cx << 2;
 	   break;
          default:
 	   lDelta = 0;
 	   break;
       }
 
-      ppdev->PointerSaveSurface = (HSURF)EngCreateBitmap(
-         Size, lDelta, pso->iBitmapFormat, BMF_TOPDOWN | BMF_NOZEROINIT, NULL);
+      pgp->SaveSurface = (HSURF)EngCreateBitmap(
+         pgp->Size, lDelta, pso->iBitmapFormat, BMF_TOPDOWN | BMF_NOZEROINIT, NULL);
    }
 
    IntShowMousePointer(ppdev, pso);
@@ -568,11 +449,18 @@
    IN LONG y,
    IN RECTL *prcl)
 {
-   GDIDEVICE *ppdev = (GDIDEVICE *)pso->hdev;
+   GDIDEVICE *ppdev;
+   
+   GDIPOINTER *pgp;
+
+   ASSERT(pso);
+
+   ppdev = GDIDEV(pso);
+   pgp = &ppdev->Pointer;
 
    IntHideMousePointer(ppdev, pso);
-   ppdev->PointerAttributes.Column = x - ppdev->PointerHotSpot.x;
-   ppdev->PointerAttributes.Row = y - ppdev->PointerHotSpot.y;
+   pgp->Pos.x = x - pgp->HotSpot.x;
+   pgp->Pos.y = y - pgp->HotSpot.y;
    if (x != -1)
    {
       IntShowMousePointer(ppdev, pso);
@@ -580,10 +468,10 @@
 
    if (prcl != NULL)
    {
-      prcl->left = ppdev->PointerAttributes.Column;
-      prcl->top = ppdev->PointerAttributes.Row;
-      prcl->right = prcl->left + ppdev->PointerAttributes.Width;
-      prcl->bottom = prcl->top + ppdev->PointerAttributes.Height;
+      prcl->left = pgp->Pos.x;
+      prcl->top = pgp->Pos.y;
+      prcl->right = pgp->Pos.x + pgp->Size.cx;
+      prcl->bottom = pgp->Pos.y + pgp->Size.cy;
    }
 }
 

reactos/subsys/win32k/include
object.h 1.24.4.3 -> 1.24.4.4
diff -u -r1.24.4.3 -r1.24.4.4
--- object.h	14 Sep 2004 01:00:43 -0000	1.24.4.3
+++ object.h	23 Nov 2004 01:57:22 -0000	1.24.4.4
@@ -102,7 +102,7 @@
 VOID  INTERNAL_CALL CreateStockObjects (VOID);
 VOID  INTERNAL_CALL CreateSysColorObjects (VOID);
 
-BOOL  INTERNAL_CALL CleanupForProcess (struct _EPROCESS *Process, INT Pid);
+BOOL  INTERNAL_CALL GDI_CleanupForProcess (struct _EPROCESS *Process);
 
 PPOINT INTERNAL_CALL GDI_Bezier (const POINT *Points, INT count, PINT nPtsOut);
 

reactos/subsys/win32k/main
dllmain.c 1.76.12.5 -> 1.76.12.6
diff -u -r1.76.12.5 -r1.76.12.6
--- dllmain.c	29 Sep 2004 10:27:03 -0000	1.76.12.5
+++ dllmain.c	23 Nov 2004 01:57:22 -0000	1.76.12.6
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: dllmain.c,v 1.76.12.5 2004/09/29 10:27:03 weiden Exp $
+/* $Id: dllmain.c,v 1.76.12.6 2004/11/23 01:57:22 weiden Exp $
  *
  *  Entry Point for win32k.sys
  */
@@ -50,10 +50,9 @@
 
 NTSTATUS STDCALL
 Win32kProcessCallback (struct _EPROCESS *Process,
-		     BOOLEAN Create)
+		       BOOLEAN Create)
 {
   PW32PROCESS Win32Process;
-  NTSTATUS Status;
 
   DPRINT("Win32kProcessCallback() called\n");
 
@@ -61,48 +60,20 @@
   if (Create)
     {
       DPRINT("W32k: Create process\n");
-      
-      InitializeListHead(&Win32Process->ClassListHead);     
-
-      InitializeListHead(&Win32Process->PrivateFontListHead);
-      ExInitializeFastMutex(&Win32Process->PrivateFontListLock);
-      
-      InitializeListHead(&Win32Process->CursorIconListHead);
-      ExInitializeFastMutex(&Win32Process->CursorIconListLock);
 
-      Win32Process->KeyboardLayout = W32kGetDefaultKeyLayout();
-      Win32Process->WindowStation = NULL;
-      if (Process->Win32WindowStation != NULL)
-	{
-	  Status = 
-	    IntValidateWindowStationHandle(Process->Win32WindowStation,
-					   UserMode,
-					   GENERIC_ALL,
-					   &Win32Process->WindowStation);
-	  if (!NT_SUCCESS(Status))
-	    {
-	      DPRINT1("Win32K: Failed to reference a window station for process.\n");
-	    }
-	}
-      
-      /* setup process flags */
-      Win32Process->Flags = 0;
     }
   else
     {
       DPRINT("W32k: Destroy process, IRQ level: %lu\n", KeGetCurrentIrql ());
 
-      CleanupForProcess(Process, Process->UniqueProcessId);
+      GDI_CleanupForProcess(Process);
 
       IntGraphicsCheck(FALSE);
       
       /*
        * Deregister logon application automatically
        */
-      if(LogonProcess == Win32Process)
-      {
-        LogonProcess = NULL;
-      }
+      InterlockedCompareExchangePointer(&LogonProcess, NULL, Process);
     }
 
   return STATUS_SUCCESS;
@@ -111,11 +82,10 @@
 
 NTSTATUS STDCALL
 Win32kThreadCallback (struct _ETHREAD *Thread,
-		    BOOLEAN Create)
+		      BOOLEAN Create)
 {
   struct _EPROCESS *Process;
   PW32THREAD Win32Thread;
-  NTSTATUS Status;
 
   DPRINT("Win32kThreadCallback() called\n");
 
@@ -124,49 +94,10 @@
   if (Create)
     {
       DPRINT("W32k: Create thread\n");
-
-      Win32Thread->IsExiting = FALSE;
-      /* FIXME - destroy caret */
-      Win32Thread->MessageQueue = MsqCreateMessageQueue(Thread);
-      Win32Thread->KeyboardLayout = W32kGetDefaultKeyLayout();
-      Win32Thread->MessagePumpHookValue = 0;
-      InitializeListHead(&Win32Thread->WindowListHead);
-      ExInitializeFastMutex(&Win32Thread->WindowListLock);
-      InitializeListHead(&Win32Thread->W32CallbackListHead);
-      ExInitializeFastMutex(&Win32Thread->W32CallbackListLock);
-
-      /* By default threads get assigned their process's desktop. */
-      Win32Thread->Desktop = NULL;
-      Win32Thread->hDesktop = NULL;
-      if (Process->Win32Desktop != NULL)
-	{
-	  Status = ObReferenceObjectByHandle(Process->Win32Desktop,
-					     GENERIC_ALL,
-					     ExDesktopObjectType,
-					     UserMode,
-					     (PVOID*)&Win32Thread->Desktop,
-					     NULL);
-	  if (!NT_SUCCESS(Status))
-	    {
-	      DPRINT1("Win32K: Failed to reference a desktop for thread.\n");
-	    }
-	  
-	  Win32Thread->hDesktop = Process->Win32Desktop;
-	}
     }
   else
     {
-      DPRINT1("=== W32k: Destroy thread ===\n");
 
-      Win32Thread->IsExiting = TRUE;
-      #if 0
-      HOOK_DestroyThreadHooks(Thread);
-      #endif
-      RemoveTimersThread(Thread->Cid.UniqueThread);
-      DestroyThreadWindows(Thread);
-      IntBlockInput(Win32Thread, FALSE);
-      MsqDestroyMessageQueue(Win32Thread->MessageQueue);
-      IntCleanupThreadCallbacks(Win32Thread);
     }
 
   return STATUS_SUCCESS;
@@ -287,37 +218,4 @@
   return TRUE;
 }
 
-NTSTATUS
-IntConvertProcessToGUIProcess(PEPROCESS Process)
-{
-  /* FIXME - Convert process to GUI process! */
-  DPRINT1("FIXME: Convert Process to GUI Process!!!!\n");
-  return STATUS_UNSUCCESSFUL;
-}
-
-inline NTSTATUS
-IntConvertThreadToGUIThread(PETHREAD Thread)
-{
-  NTSTATUS Status;
-  
-  /* FIXME - do this atomic!!! */
-  
-  if(Thread->Tcb.Win32Thread != NULL)
-  {
-    return STATUS_SUCCESS;
-  }
-  
-  /* FIXME - Convert thread to GUI thread! */
-  Status = STATUS_UNSUCCESSFUL;
-  DPRINT1("FIXME: Convert Thread to GUI Thread!!!!\n");
-  
-  if(NT_SUCCESS(Status) && Thread->ThreadsProcess->Win32Process == NULL)
-  {
-    /* We also need to convert the process */
-    return IntConvertProcessToGUIProcess(Thread->ThreadsProcess);
-  }
-  
-  return Status;
-}
-
 /* EOF */

reactos/subsys/win32k/misc
error.c 1.7.14.1 -> 1.7.14.2
diff -u -r1.7.14.1 -r1.7.14.2
--- error.c	14 Sep 2004 01:00:43 -0000	1.7.14.1
+++ error.c	23 Nov 2004 01:57:22 -0000	1.7.14.2
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: error.c,v 1.7.14.1 2004/09/14 01:00:43 weiden Exp $
+/* $Id: error.c,v 1.7.14.2 2004/11/23 01:57:22 weiden Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -27,6 +27,7 @@
  *       06-06-2001  CSH  Created
  */
 #include <ddk/ntddk.h>
+#include <ddk/ntpoapi.h>
 #include <win32k/debug.h>
 #include <internal/ps.h>
 

reactos/subsys/win32k/objects
bitmaps.c 1.79.2.2 -> 1.79.2.3
diff -u -r1.79.2.2 -r1.79.2.3
--- bitmaps.c	14 Sep 2004 01:00:45 -0000	1.79.2.2
+++ bitmaps.c	23 Nov 2004 01:57:22 -0000	1.79.2.3
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: bitmaps.c,v 1.79.2.2 2004/09/14 01:00:45 weiden Exp $ */
+/* $Id: bitmaps.c,v 1.79.2.3 2004/11/23 01:57:22 weiden Exp $ */
 #include <w32k.h>
 
 #define IN_RECT(r,x,y) \
@@ -573,7 +573,9 @@
 		SetLastWin32Error(ERROR_INVALID_HANDLE);
 		return Result;
 	}
-	if ( IN_RECT(dc->CombinedClip->rclBounds,XPos,YPos) )
+        XPos += dc->w.DCOrgX;
+        YPos += dc->w.DCOrgY;
+        if ( IN_RECT(dc->CombinedClip->rclBounds,XPos,YPos) )
 	{
 		bInRect = TRUE;
 		BitmapObject = BITMAPOBJ_LockBitmap(dc->w.hBitmap);

reactos/subsys/win32k/objects
dc.c 1.144.2.4 -> 1.144.2.5
diff -u -r1.144.2.4 -r1.144.2.5
--- dc.c	14 Sep 2004 01:00:45 -0000	1.144.2.4
+++ dc.c	23 Nov 2004 01:57:22 -0000	1.144.2.5
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: dc.c,v 1.144.2.4 2004/09/14 01:00:45 weiden Exp $
+/* $Id: dc.c,v 1.144.2.5 2004/11/23 01:57:22 weiden Exp $
  *
  * DC.C - Device context functions
  *
@@ -471,6 +471,7 @@
       DPRINT("Trying to load display driver no. %d\n", DisplayNumber);
 
       RtlZeroMemory(&PrimarySurface, sizeof(PrimarySurface));
+      PrimarySurface.IsPrimarySurface = TRUE;
 
       PrimarySurface.VideoFileObject = DRIVER_FindMPDriver(DisplayNumber);
 
@@ -2128,16 +2129,6 @@
     }
 }
 
-BOOL INTERNAL_CALL
-IntIsPrimarySurface(SURFOBJ *SurfObj)
-{
-   if (PrimarySurface.Handle == NULL)
-     {
-       return FALSE;
-     }
-   return SurfObj->hsurf == PrimarySurface.Handle;
-}
-
 /*
  * Returns the color of the brush or pen that is currently selected into the DC.
  * This function is called from GetDCBrushColor() and GetDCPenColor()

reactos/subsys/win32k/objects
gdiobj.c 1.71.4.5 -> 1.71.4.6
diff -u -r1.71.4.5 -r1.71.4.6
--- gdiobj.c	29 Sep 2004 10:27:04 -0000	1.71.4.5
+++ gdiobj.c	23 Nov 2004 01:57:22 -0000	1.71.4.6
@@ -19,7 +19,7 @@
 /*
  * GDIOBJ.C - GDI object manipulation routines
  *
- * $Id: gdiobj.c,v 1.71.4.5 2004/09/29 10:27:04 weiden Exp $
+ * $Id: gdiobj.c,v 1.71.4.6 2004/11/23 01:57:22 weiden Exp $
  */
 #include <w32k.h>
 
@@ -541,7 +541,7 @@
  * \param	Process - PID of the process that will be destroyed.
 */
 BOOL INTERNAL_CALL
-CleanupForProcess (struct _EPROCESS *Process, INT Pid)
+GDI_CleanupForProcess (struct _EPROCESS *Process)
 {
   PGDI_TABLE_ENTRY Entry;
   PEPROCESS CurrentProcess;

reactos/subsys/win32k/tests
setup.c added at 1.2.2.1
diff -N setup.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ setup.c	23 Nov 2004 01:57:22 -0000	1.2.2.1
@@ -0,0 +1,6 @@
+#include <windows.h>
+#include "regtests.h"
+
+_SetupOnce()
+{
+}

reactos/subsys/win32k/tests
.cvsignore 1.1 -> 1.1.12.1
diff -u -r1.1 -r1.1.12.1
--- .cvsignore	13 May 2004 19:31:09 -0000	1.1
+++ .cvsignore	23 Nov 2004 01:57:22 -0000	1.1.12.1
@@ -1,7 +1,9 @@
 _regtests.c
 _rtstub.c
+_hooks.c
+_stubs.S
 Makefile.tests
 *.d
 *.o
 *.a
-
+*.pch

reactos/subsys/win32k/tests
makefile 1.2 -> 1.2.12.1
diff -u -r1.2 -r1.2.12.1
--- makefile	15 May 2004 20:30:19 -0000	1.2
+++ makefile	23 Nov 2004 01:57:22 -0000	1.2.12.1
@@ -1,6 +1,6 @@
 PATH_TO_TOP = ../../..
 
-TARGET_TYPE = library
+TARGET_TYPE = test
 
 TARGET_NAME = regtests
 
@@ -10,13 +10,14 @@
                 -D__USE_W32API \
                 -D_WIN32K_
 
+TARGET_LIBS = ../win32k.a
+
 -include Makefile.tests
 
 TARGET_OBJECTS = \
-  _regtests.o \
+  setup.o \
   $(addprefix tests/, $(TESTS))
 
 include $(PATH_TO_TOP)/rules.mak
 
 include $(TOOLS_PATH)/helper.mk
-

reactos/subsys/win32k/tests/tests
eng-mem-1.c 1.1.12.1 -> 1.1.12.2
diff -u -r1.1.12.1 -r1.1.12.2
--- eng-mem-1.c	27 Aug 2004 15:56:05 -0000	1.1.12.1
+++ eng-mem-1.c	23 Nov 2004 01:57:22 -0000	1.1.12.2
@@ -3,8 +3,9 @@
 
 #include "regtests.h"
 
-static int RunTest(char *Buffer)
+static void RunTest()
 {
+#if 0
   VOID *pmem1, *pmem2;
   ULONG AllocSize1, AllocSize2;
   ULONG AllocTag1, AllocTag2;
@@ -15,21 +16,21 @@
   AllocSize1 = 1024;
   AllocTag1 = TAG('D','x','y','z');
   pmem1 = EngAllocMem(FL_ZERO_MEMORY, AllocSize1, AllocTag1);
-  FAIL_IF_EQUAL(pmem1, 0, "EngAllocMem() for pmem1 failed");
+  _AssertNotEqualValue(pmem1, NULL);
 
   /* Allocate memory with EngAllocMem */
   pmem2 = 0;
   AllocSize2 = 1024;
   AllocTag2 = TAG('D','x','y','z');
   pmem2 = EngAllocUserMem(AllocSize2, AllocTag2);
-  FAIL_IF_EQUAL(pmem1, 0, "EngAllocUserMem() for pmem2 failed");
+  _AssertNotEqualValue(pmem1, NULL);
 
   /* Lock down memory with EngSecureMem
   ** Dependant functions in ntoskrnl.exe are currently unimplemented
   Handle1 = EngSecureMem(pmem1, AllocSize1);
-  FAIL_IF_NULL(pmem1, "EngSecureMem() for pmem1 failed");
+  _AssertNotEqualValue(pmem1, NULL);
   Handle2 = EngSecureMem(pmem2, AllocSize2);
-  FAIL_IF_NULL(pmem2, "EngSecureMem() for pmem2 failed"); */
+  _AssertNotEqualValue(pmem2, NULL);
 
   /* Unlock down memory with EngSecureMem
   ** Dependant functions in ntoskrnl.exe are currently unimplemented
@@ -41,8 +42,7 @@
 
   /* Free memory with EngFreeUserMem */
   EngFreeUserMem(pmem2);
-
-  return TS_OK;
+#endif
 }
 
-DISPATCHER(Eng_mem_1Test, "Win32k Engine Memory API")
+_Dispatcher(Eng_mem_1Test, "Win32k Engine Memory API")

reactos/subsys/win32k
win32k.rc 1.6 -> 1.6.30.1
diff -u -r1.6 -r1.6.30.1
--- win32k.rc	24 Sep 2003 20:32:11 -0000	1.6
+++ win32k.rc	23 Nov 2004 01:57:22 -0000	1.6.30.1
@@ -1,38 +1,7 @@
-#include <defines.h>
-#include <reactos/resource.h>
-
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-
-VS_VERSION_INFO VERSIONINFO
-	FILEVERSION	RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
-	PRODUCTVERSION	RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
-	FILEFLAGSMASK	0x3fL
-#ifdef _DEBUG
-	FILEFLAGS	0x1L
-#else
-	FILEFLAGS	0x0L
-#endif
-	FILEOS		0x40004L
-	FILETYPE	0x2L
-	FILESUBTYPE	0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "040904b0"
-        BEGIN
-            VALUE "CompanyName",	RES_STR_COMPANY_NAME
-            VALUE "FileDescription",	"W32 GDI KM subsystem\0"
-            VALUE "FileVersion",	RES_STR_FILE_VERSION
-            VALUE "InternalName",	"win32k\0"
-            VALUE "LegalCopyright",	RES_STR_LEGAL_COPYRIGHT
-            VALUE "OriginalFilename",	"win32k.sys\0"
-            VALUE "ProductName",	RES_STR_PRODUCT_NAME
-            VALUE "ProductVersion",	RES_STR_PRODUCT_VERSION
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 1200
-    END
-END
+/* $Id: win32k.rc,v 1.6.30.1 2004/11/23 01:57:22 weiden Exp $ */
 
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION	"W32 GDI KM subsystem\0"
+#define REACTOS_STR_INTERNAL_NAME	"win32k\0"
+#define REACTOS_STR_ORIGINAL_FILENAME	"win32k.sys\0"
+#include <reactos/version.rc>
CVSspam 0.2.8