From 985468e1ef9c07fc52e07c5f17c6d69643b17c1d Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sun, 8 Jan 2006 23:26:03 +0000 Subject: [PATCH] - Get the win32k beast tamed by msvc. svn path=/trunk/; revision=20742 --- reactos/include/ndk/extypes.h | 2 ++ reactos/subsys/win32k/dib/dib16bpp.c | 13 +++++------ reactos/subsys/win32k/dib/dib1bpp.c | 3 ++- reactos/subsys/win32k/dib/dib24bpp.c | 8 +++---- reactos/subsys/win32k/dib/dib32bpp.c | 7 +++--- reactos/subsys/win32k/dib/dib8bpp.c | 2 +- reactos/subsys/win32k/eng/bitblt.c | 6 ++--- reactos/subsys/win32k/eng/gradient.c | 2 +- reactos/subsys/win32k/include/gdifloat.h | 8 +++---- reactos/subsys/win32k/ntddraw/ddraw.c | 27 +++++++++++++++-------- reactos/subsys/win32k/ntuser/cursoricon.c | 5 +++-- reactos/subsys/win32k/ntuser/desktop.c | 13 ++++++----- reactos/subsys/win32k/ntuser/focus.c | 4 ++-- reactos/subsys/win32k/ntuser/hook.c | 20 ++++++++--------- reactos/subsys/win32k/ntuser/input.c | 12 +++++----- reactos/subsys/win32k/ntuser/keyboard.c | 3 ++- reactos/subsys/win32k/ntuser/message.c | 6 ++--- reactos/subsys/win32k/ntuser/misc.c | 7 +++--- reactos/subsys/win32k/ntuser/msgqueue.c | 2 +- reactos/subsys/win32k/ntuser/painting.c | 2 +- reactos/subsys/win32k/ntuser/windc.c | 8 +++---- reactos/subsys/win32k/ntuser/winpos.c | 2 +- reactos/subsys/win32k/objects/bitmaps.c | 10 +++++---- reactos/subsys/win32k/objects/fillshap.c | 3 ++- reactos/subsys/win32k/objects/pen.c | 2 +- reactos/subsys/win32k/objects/polyfill.c | 5 ++--- reactos/subsys/win32k/objects/region.c | 4 ++-- reactos/subsys/win32k/w32k.h | 11 +++++++++ reactos/subsys/win32k/win32k.xml | 7 ++++++ 29 files changed, 120 insertions(+), 84 deletions(-) diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h index bd7c6f17946..6e1c7d121d1 100644 --- a/reactos/include/ndk/extypes.h +++ b/reactos/include/ndk/extypes.h @@ -43,6 +43,8 @@ typedef USHORT RTL_ATOM, *PRTL_ATOM; // // Kernel Exported Object Types // +extern POBJECT_TYPE NTSYSAPI ExDesktopObjectType; +extern POBJECT_TYPE NTSYSAPI ExWindowStationObjectType; extern POBJECT_TYPE NTSYSAPI ExIoCompletionType; extern POBJECT_TYPE NTSYSAPI ExMutantObjectType; extern POBJECT_TYPE NTSYSAPI ExTimerType; diff --git a/reactos/subsys/win32k/dib/dib16bpp.c b/reactos/subsys/win32k/dib/dib16bpp.c index b4603e085e8..0ac0517e04c 100644 --- a/reactos/subsys/win32k/dib/dib16bpp.c +++ b/reactos/subsys/win32k/dib/dib16bpp.c @@ -45,8 +45,7 @@ DIB_16BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) { PDWORD addr = (PDWORD)((PWORD)((PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta) + x1); - -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) /* This is about 10% faster than the generic C code below */ LONG Count = x2 - x1; @@ -97,7 +96,7 @@ DIB_16BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) VOID DIB_16BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c) { -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) asm volatile( " testl %2, %2" "\n\t" " jle 2f" "\n\t" @@ -129,7 +128,7 @@ DIB_16BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c) "r"(SurfObj->lDelta), "r"(y2 - y1), "a"(c) : "cc", "memory", "%ecx"); #else - PBYTE byteaddr = SurfObj->pvScan0 + y1 * SurfObj->lDelta; + PBYTE byteaddr = (ULONG_PTR)SurfObj->pvScan0 + y1 * SurfObj->lDelta; PWORD addr = (PWORD)byteaddr + x; LONG lDelta = SurfObj->lDelta; @@ -342,7 +341,7 @@ DIB_16BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color) { ULONG DestY; -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) /* This is about 10% faster than the generic C code below */ ULONG delta = DestSurface->lDelta; ULONG width = (DestRect->right - DestRect->left) ; @@ -865,13 +864,13 @@ typedef union { } col; } NICEPIXEL16; -STATIC inline UCHAR +static __inline UCHAR Clamp5(ULONG val) { return (val > 31) ? 31 : val; } -STATIC inline UCHAR +static __inline UCHAR Clamp6(ULONG val) { return (val > 63) ? 63 : val; diff --git a/reactos/subsys/win32k/dib/dib1bpp.c b/reactos/subsys/win32k/dib/dib1bpp.c index bd3f2586c1a..29eab73868d 100644 --- a/reactos/subsys/win32k/dib/dib1bpp.c +++ b/reactos/subsys/win32k/dib/dib1bpp.c @@ -88,6 +88,7 @@ DIB_1BPP_BitBltSrcCopy_From1BPP ( int dy2; // dest y end int sy1; // src y start + int dx; int shift; BYTE srcmask, dstmask; @@ -142,7 +143,7 @@ DIB_1BPP_BitBltSrcCopy_From1BPP ( pd = d; ps = s; srcmask = 0xff; - int dx = dwx; /* dest x for this pass */ + dx = dwx; /* dest x for this pass */ if ( dwx < dl ) { int diff = dl-dwx; diff --git a/reactos/subsys/win32k/dib/dib24bpp.c b/reactos/subsys/win32k/dib/dib24bpp.c index 30493e1e01d..b3cf2278aea 100644 --- a/reactos/subsys/win32k/dib/dib24bpp.c +++ b/reactos/subsys/win32k/dib/dib24bpp.c @@ -43,7 +43,7 @@ DIB_24BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) { PBYTE addr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + (x1 << 1) + x1; ULONG Count = x2 - x1; -#ifndef _M_IX86 +#if !defined(_M_IX86) || defined(_MSC_VER) ULONG MultiCount; ULONG Fill[3]; #endif @@ -78,7 +78,7 @@ DIB_24BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) * * So, taking endianness into account again, we need to fill with these * ULONGs: CABC BCAB ABCA */ -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) /* This is about 30% faster than the generic C code below */ __asm__ __volatile__ ( " movl %1, %%ecx\n" @@ -396,7 +396,7 @@ DIB_24BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color) { ULONG DestY; -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) PBYTE xaddr = (PBYTE)DestSurface->pvScan0 + DestRect->top * DestSurface->lDelta + (DestRect->left << 1) + DestRect->left; PBYTE addr; ULONG Count; @@ -678,7 +678,7 @@ typedef union { } col; } NICEPIXEL32; -STATIC inline UCHAR +static __inline UCHAR Clamp8(ULONG val) { return (val > 255) ? 255 : val; diff --git a/reactos/subsys/win32k/dib/dib32bpp.c b/reactos/subsys/win32k/dib/dib32bpp.c index bc44a28a3d9..80b6dd861e2 100644 --- a/reactos/subsys/win32k/dib/dib32bpp.c +++ b/reactos/subsys/win32k/dib/dib32bpp.c @@ -41,8 +41,7 @@ DIB_32BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y) return (ULONG)(*addr); } - -#ifdef _M_IX86 +#if defined(_M_IX86) && !defined(_MSC_VER) VOID DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) { @@ -78,7 +77,7 @@ DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) VOID DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c) { - PBYTE byteaddr = SurfObj->pvScan0 + y * SurfObj->lDelta; + PBYTE byteaddr = (ULONG_PTR)SurfObj->pvScan0 + y * SurfObj->lDelta; PDWORD addr = (PDWORD)byteaddr + x1; LONG cx = x1; while(cx < x2) @@ -744,7 +743,7 @@ typedef union { } col; } NICEPIXEL32; -STATIC inline UCHAR +static __inline UCHAR Clamp8(ULONG val) { return (val > 255) ? 255 : val; diff --git a/reactos/subsys/win32k/dib/dib8bpp.c b/reactos/subsys/win32k/dib/dib8bpp.c index dde6e9e347e..03440a50dde 100644 --- a/reactos/subsys/win32k/dib/dib8bpp.c +++ b/reactos/subsys/win32k/dib/dib8bpp.c @@ -681,7 +681,7 @@ typedef union { } col; } NICEPIXEL16; -STATIC inline UCHAR +static __inline UCHAR Clamp8(ULONG val) { return (val > 255) ? 255 : val; diff --git a/reactos/subsys/win32k/eng/bitblt.c b/reactos/subsys/win32k/eng/bitblt.c index 8195fe1c0a7..9aa1a0531ed 100644 --- a/reactos/subsys/win32k/eng/bitblt.c +++ b/reactos/subsys/win32k/eng/bitblt.c @@ -32,7 +32,7 @@ #define NDEBUG #include -typedef BOOLEAN STDCALL (*PBLTRECTFUNC)(SURFOBJ* OutputObj, +typedef BOOLEAN (STDCALL *PBLTRECTFUNC)(SURFOBJ* OutputObj, SURFOBJ* InputObj, SURFOBJ* Mask, XLATEOBJ* ColorTranslation, @@ -42,7 +42,7 @@ typedef BOOLEAN STDCALL (*PBLTRECTFUNC)(SURFOBJ* OutputObj, BRUSHOBJ* Brush, POINTL* BrushOrigin, ROP4 Rop4); -typedef BOOLEAN STDCALL (*PSTRETCHRECTFUNC)(SURFOBJ* OutputObj, +typedef BOOLEAN (STDCALL *PSTRETCHRECTFUNC)(SURFOBJ* OutputObj, SURFOBJ* InputObj, SURFOBJ* Mask, CLIPOBJ* ClipRegion, @@ -246,7 +246,7 @@ CallDibBitBlt(SURFOBJ* OutputObj, return Result; } -INT abs(INT nm); +INT __cdecl abs(INT nm); /* * @implemented diff --git a/reactos/subsys/win32k/eng/gradient.c b/reactos/subsys/win32k/eng/gradient.c index 1a905b65346..49e255baf32 100644 --- a/reactos/subsys/win32k/eng/gradient.c +++ b/reactos/subsys/win32k/eng/gradient.c @@ -452,7 +452,7 @@ IntEngGradientFillTriangle( } -BOOL FASTCALL STATIC +BOOL static IntEngIsNULLTriangle(TRIVERTEX *pVertex, GRADIENT_TRIANGLE *gt) { if(COMPAREVERTEX(VERTEX(Vertex1), VERTEX(Vertex2))) diff --git a/reactos/subsys/win32k/include/gdifloat.h b/reactos/subsys/win32k/include/gdifloat.h index abc50f8a9b0..320eb263ea4 100644 --- a/reactos/subsys/win32k/include/gdifloat.h +++ b/reactos/subsys/win32k/include/gdifloat.h @@ -15,7 +15,7 @@ typedef struct tagFLOAT_POINT * transformation process is done in floating point internally. This function * is then used to round these coordinates to integer values. */ -static inline INT GDI_ROUND(FLOAT val) +static __inline INT GDI_ROUND(FLOAT val) { return (int)floor(val + 0.5); } @@ -23,7 +23,7 @@ static inline INT GDI_ROUND(FLOAT val) /* Performs a world-to-viewport transformation on the specified point (which * is in floating point format). */ -static inline void INTERNAL_LPTODP_FLOAT(DC *dc, FLOAT_POINT *point) +static __inline void INTERNAL_LPTODP_FLOAT(DC *dc, FLOAT_POINT *point) { FLOAT x, y; @@ -42,7 +42,7 @@ static inline void INTERNAL_LPTODP_FLOAT(DC *dc, FLOAT_POINT *point) * is in integer format). Returns TRUE if successful, else FALSE. */ #if 0 -static inline BOOL INTERNAL_DPTOLP(DC *dc, LPPOINT point) +static __inline BOOL INTERNAL_DPTOLP(DC *dc, LPPOINT point) { FLOAT_POINT floatPoint; @@ -62,7 +62,7 @@ static inline BOOL INTERNAL_DPTOLP(DC *dc, LPPOINT point) /* Performs a world-to-viewport transformation on the specified point (which * is in integer format). */ -static inline void INTERNAL_LPTODP(DC *dc, LPPOINT point) +static __inline void INTERNAL_LPTODP(DC *dc, LPPOINT point) { FLOAT_POINT floatPoint; diff --git a/reactos/subsys/win32k/ntddraw/ddraw.c b/reactos/subsys/win32k/ntddraw/ddraw.c index d11d00702b7..55e4f0f6add 100644 --- a/reactos/subsys/win32k/ntddraw/ddraw.c +++ b/reactos/subsys/win32k/ntddraw/ddraw.c @@ -49,6 +49,10 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( DD_CALLBACKS callbacks; DD_SURFACECALLBACKS surface_callbacks; DD_PALETTECALLBACKS palette_callbacks; + DC *pDC; + BOOL success; + HANDLE hDirectDraw; + PDD_DIRECTDRAW pDirectDraw; #ifdef DX_DEBUG DPRINT1("NtGdiDdCreateDirectDrawObject\n"); #endif @@ -67,7 +71,7 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( return NULL; } - DC *pDC = DC_LockDc(hdc); + pDC = DC_LockDc(hdc); if (!pDC) return NULL; @@ -78,7 +82,7 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( return NULL; } - BOOL success = pDC->DriverFunctions.EnableDirectDraw( + success = pDC->DriverFunctions.EnableDirectDraw( pDC->PDev, &callbacks, &surface_callbacks, &palette_callbacks); if (!success) @@ -91,7 +95,7 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( return NULL; } - HANDLE hDirectDraw = GDIOBJ_AllocObj(GDI_OBJECT_TYPE_DIRECTDRAW); + hDirectDraw = GDIOBJ_AllocObj(GDI_OBJECT_TYPE_DIRECTDRAW); if (!hDirectDraw) { /* No more memmory */ @@ -102,7 +106,7 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject( return NULL; } - PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW); + pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW); if (!pDirectDraw) { /* invalid handle */ @@ -160,6 +164,8 @@ BOOL STDCALL NtGdiDdQueryDirectDrawObject( ) { #ifdef DX_DEBUG + PDD_DIRECTDRAW pDirectDraw; + BOOL success; DPRINT1("NtGdiDdQueryDirectDrawObject\n"); #endif @@ -195,7 +201,7 @@ BOOL STDCALL NtGdiDdQueryDirectDrawObject( } - PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); + pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); if (!pDirectDraw) @@ -207,7 +213,7 @@ BOOL STDCALL NtGdiDdQueryDirectDrawObject( return FALSE; } - BOOL success = pDirectDraw->DrvGetDirectDrawInfo( + success = pDirectDraw->DrvGetDirectDrawInfo( pDirectDraw->Global.dhpdev, pHalInfo, puNumHeaps, @@ -413,12 +419,13 @@ DWORD STDCALL NtGdiDdCreateSurface( ) { DWORD ddRVal = DDHAL_DRIVER_NOTHANDLED; + PDD_DIRECTDRAW pDirectDraw; PDD_DIRECTDRAW_GLOBAL lgpl; #ifdef DX_DEBUG DPRINT1("NtGdiDdCreateSurface\n"); #endif - PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); + pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); if (pDirectDraw == NULL) { #ifdef DX_DEBUG @@ -460,12 +467,13 @@ DWORD STDCALL NtGdiDdWaitForVerticalBlank( { DWORD ddRVal; PDD_DIRECTDRAW_GLOBAL lgpl; + PDD_DIRECTDRAW pDirectDraw; #ifdef DX_DEBUG DPRINT1("NtGdiDdWaitForVerticalBlank\n"); #endif - PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); + pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); if (pDirectDraw == NULL) return DDHAL_DRIVER_NOTHANDLED; @@ -978,6 +986,7 @@ HANDLE STDCALL NtGdiDdCreateSurfaceObject( ) { PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW); + PDD_SURFACE pSurface; #ifdef DX_DEBUG DPRINT1("NtGdiDdCreateSurfaceObject\n"); #endif @@ -987,7 +996,7 @@ HANDLE STDCALL NtGdiDdCreateSurfaceObject( if (!hSurface) hSurface = GDIOBJ_AllocObj(GDI_OBJECT_TYPE_DD_SURFACE); - PDD_SURFACE pSurface = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DD_SURFACE); + pSurface = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DD_SURFACE); /* FIXME - Handle pSurface == NULL!!!! */ RtlMoveMemory(&pSurface->Local, puSurfaceLocal, sizeof(DD_SURFACE_LOCAL)); diff --git a/reactos/subsys/win32k/ntuser/cursoricon.c b/reactos/subsys/win32k/ntuser/cursoricon.c index 475510d9273..410da3a6769 100644 --- a/reactos/subsys/win32k/ntuser/cursoricon.c +++ b/reactos/subsys/win32k/ntuser/cursoricon.c @@ -113,6 +113,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor, SURFOBJ *soMask = NULL, *soColor = NULL; XLATEOBJ *XlateObj = NULL; HDC Screen; + PDC dc; CurInfo = IntGetSysCursorInfo(WinSta); OldCursor = CurInfo->CurrentCursorObject; @@ -132,7 +133,7 @@ IntSetCursor(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT NewCursor, return (HCURSOR)0; } /* FIXME use the desktop's HDC instead of using ScreenDeviceContext */ - PDC dc = DC_LockDc(Screen); + dc = DC_LockDc(Screen); if (!dc) { @@ -772,6 +773,7 @@ NtUserGetCursorInfo( PWINSTATION_OBJECT WinSta; NTSTATUS Status; PCURICON_OBJECT CurIcon; + HDC hDC; DECLARE_RETURN(BOOL); DPRINT("Enter NtUserGetCursorInfo\n"); @@ -779,7 +781,6 @@ NtUserGetCursorInfo( #if 1 - HDC hDC; /* FIXME - get the screen dc from the window station or desktop */ if (!(hDC = IntGetScreenDC())) diff --git a/reactos/subsys/win32k/ntuser/desktop.c b/reactos/subsys/win32k/ntuser/desktop.c index b7449711e79..5a446272dba 100644 --- a/reactos/subsys/win32k/ntuser/desktop.c +++ b/reactos/subsys/win32k/ntuser/desktop.c @@ -1196,12 +1196,15 @@ NtUserPaintDesktop(HDC hDC) BOOL doPatBlt = TRUE; PWINDOW_OBJECT WndDesktop; int len; + COLORREF color_old; + UINT align_old; + int mode_old; + PWINSTATION_OBJECT WinSta = PsGetWin32Thread()->Desktop->WindowStation; DECLARE_RETURN(BOOL); - + UserEnterExclusive(); DPRINT("Enter NtUserPaintDesktop\n"); - PWINSTATION_OBJECT WinSta = PsGetWin32Thread()->Desktop->WindowStation; IntGdiGetClipBox(hDC, &Rect); @@ -1359,9 +1362,9 @@ NtUserPaintDesktop(HDC hDC) rect.bottom = UserGetSystemMetrics(SM_CYSCREEN); } - COLORREF color_old = NtGdiSetTextColor(hDC, RGB(255,255,255)); - UINT align_old = NtGdiSetTextAlign(hDC, TA_RIGHT); - int mode_old = NtGdiSetBkMode(hDC, TRANSPARENT); + color_old = NtGdiSetTextColor(hDC, RGB(255,255,255)); + align_old = NtGdiSetTextAlign(hDC, TA_RIGHT); + mode_old = NtGdiSetBkMode(hDC, TRANSPARENT); NtGdiTextOut(hDC, rect.right-16, rect.bottom-48, s_wszVersion, len); diff --git a/reactos/subsys/win32k/ntuser/focus.c b/reactos/subsys/win32k/ntuser/focus.c index 6f0eae73057..cecc498549f 100644 --- a/reactos/subsys/win32k/ntuser/focus.c +++ b/reactos/subsys/win32k/ntuser/focus.c @@ -138,7 +138,7 @@ IntFindChildWindowToOwner(PWINDOW_OBJECT Root, PWINDOW_OBJECT Owner) return NULL; } -STATIC BOOL FASTCALL +static BOOL FASTCALL co_IntSetForegroundAndFocusWindow(PWINDOW_OBJECT Window, PWINDOW_OBJECT FocusWindow, BOOL MouseActivate) { HWND hWnd = Window->hSelf; @@ -438,12 +438,12 @@ CLEANUP: HWND STDCALL NtUserGetCapture(VOID) { + PUSER_MESSAGE_QUEUE ThreadQueue; DECLARE_RETURN(HWND); DPRINT("Enter NtUserGetCapture\n"); UserEnterShared(); - PUSER_MESSAGE_QUEUE ThreadQueue; ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetWin32Thread()->MessageQueue; RETURN( ThreadQueue ? ThreadQueue->CaptureWindow : 0); diff --git a/reactos/subsys/win32k/ntuser/hook.c b/reactos/subsys/win32k/ntuser/hook.c index 64be46dfc7c..c07f0743e95 100644 --- a/reactos/subsys/win32k/ntuser/hook.c +++ b/reactos/subsys/win32k/ntuser/hook.c @@ -36,10 +36,10 @@ #define HOOKID_TO_INDEX(HookId) (HookId - WH_MINHOOK) -STATIC PHOOKTABLE GlobalHooks; +static PHOOKTABLE GlobalHooks; /* create a new hook table */ -STATIC FASTCALL PHOOKTABLE +static PHOOKTABLE IntAllocHookTable(void) { PHOOKTABLE Table; @@ -86,7 +86,7 @@ PHOOK FASTCALL IntGetHookObject(HHOOK hHook) /* create a new hook and add it to the specified table */ -STATIC FASTCALL PHOOK +static PHOOK IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinStaObj) { PHOOK Hook; @@ -127,7 +127,7 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt } /* get the hook table that a given hook belongs to */ -STATIC PHOOKTABLE FASTCALL +static PHOOKTABLE FASTCALL IntGetTable(PHOOK Hook) { if (NULL == Hook->Thread || WH_KEYBOARD_LL == Hook->HookId || @@ -140,7 +140,7 @@ IntGetTable(PHOOK Hook) } /* get the first hook in the chain */ -STATIC PHOOK FASTCALL +static PHOOK FASTCALL IntGetFirstHook(PHOOKTABLE Table, int HookId) { PLIST_ENTRY Elem = Table->Hooks[HOOKID_TO_INDEX(HookId)].Flink; @@ -149,7 +149,7 @@ IntGetFirstHook(PHOOKTABLE Table, int HookId) } /* find the first non-deleted hook in the chain */ -STATIC PHOOK FASTCALL +static PHOOK FASTCALL IntGetFirstValidHook(PHOOKTABLE Table, int HookId) { PHOOK Hook; @@ -167,7 +167,7 @@ IntGetFirstValidHook(PHOOKTABLE Table, int HookId) } /* find the next hook in the chain, skipping the deleted ones */ -STATIC PHOOK FASTCALL +static PHOOK FASTCALL IntGetNextHook(PHOOK Hook) { PHOOKTABLE Table = IntGetTable(Hook); @@ -193,7 +193,7 @@ IntGetNextHook(PHOOK Hook) } /* free a hook, removing it from its chain */ -STATIC VOID FASTCALL +static VOID FASTCALL IntFreeHook(PHOOKTABLE Table, PHOOK Hook, PWINSTATION_OBJECT WinStaObj) { RemoveEntryList(&Hook->Chain); @@ -210,7 +210,7 @@ IntFreeHook(PHOOKTABLE Table, PHOOK Hook, PWINSTATION_OBJECT WinStaObj) } /* remove a hook, freeing it if the chain is not in use */ -STATIC FASTCALL VOID +static VOID IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked) { PHOOKTABLE Table = IntGetTable(Hook); @@ -232,7 +232,7 @@ IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked) } /* release a hook chain, removing deleted hooks if the use count drops to 0 */ -STATIC VOID FASTCALL +static VOID FASTCALL IntReleaseHookChain(PHOOKTABLE Table, int HookId, PWINSTATION_OBJECT WinStaObj) { PLIST_ENTRY Elem; diff --git a/reactos/subsys/win32k/ntuser/input.c b/reactos/subsys/win32k/ntuser/input.c index de7b96a3b99..2d90ec99768 100644 --- a/reactos/subsys/win32k/ntuser/input.c +++ b/reactos/subsys/win32k/ntuser/input.c @@ -233,7 +233,7 @@ MouseThreadMain(PVOID StartContext) /* Returns a value that indicates if the key is a modifier key, and * which one. */ -STATIC UINT STDCALL +static UINT STDCALL IntKeyboardGetModifiers(KEYBOARD_INPUT_DATA *InputData) { if (InputData->Flags & KEY_E1) @@ -280,7 +280,7 @@ IntKeyboardGetModifiers(KEYBOARD_INPUT_DATA *InputData) /* Asks the keyboard driver to send a small table that shows which * lights should connect with which scancodes */ -STATIC NTSTATUS STDCALL +static NTSTATUS STDCALL IntKeyboardGetIndicatorTrans(HANDLE KeyboardDeviceHandle, PKEYBOARD_INDICATOR_TRANSLATION *IndicatorTrans) { @@ -333,7 +333,7 @@ IntKeyboardGetIndicatorTrans(HANDLE KeyboardDeviceHandle, /* Sends the keyboard commands to turn on/off the lights. */ -STATIC NTSTATUS STDCALL +static NTSTATUS STDCALL IntKeyboardUpdateLeds(HANDLE KeyboardDeviceHandle, PKEYBOARD_INPUT_DATA KeyInput, PKEYBOARD_INDICATOR_TRANSLATION IndicatorTrans) @@ -374,7 +374,7 @@ IntKeyboardUpdateLeds(HANDLE KeyboardDeviceHandle, return STATUS_SUCCESS; } -STATIC VOID STDCALL +static VOID STDCALL IntKeyboardSendWinKeyMsg() { PWINDOW_OBJECT Window; @@ -395,13 +395,13 @@ IntKeyboardSendWinKeyMsg() MsqPostMessage(Window->MessageQueue, &Mesg, FALSE, QS_HOTKEY); } -STATIC VOID STDCALL +static VOID STDCALL co_IntKeyboardSendAltKeyMsg() { co_MsqPostKeyboardMessage(WM_SYSCOMMAND,SC_KEYMENU,0); } -STATIC VOID STDCALL +static VOID STDCALL KeyboardThreadMain(PVOID StartContext) { UNICODE_STRING KeyboardDeviceName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardClass0"); diff --git a/reactos/subsys/win32k/ntuser/keyboard.c b/reactos/subsys/win32k/ntuser/keyboard.c index f0b83168856..460294fd2d3 100644 --- a/reactos/subsys/win32k/ntuser/keyboard.c +++ b/reactos/subsys/win32k/ntuser/keyboard.c @@ -1043,6 +1043,7 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) UINT ScanCode = (lParam >> 16) & 0xff; BOOL ExtKey = lParam & (1<<24) ? TRUE : FALSE; PKBDTABLES keyLayout; + VSC_LPWSTR *KeyNames; DECLARE_RETURN(DWORD); DPRINT("Enter NtUserGetKeyNameText\n"); @@ -1069,7 +1070,7 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) VkCode = ScanToVk( ScanCode, ExtKey, keyLayout ); } - VSC_LPWSTR *KeyNames = 0; + KeyNames = 0; if( CareVk != VkCode ) ScanCode = VkToScan( VkCode, ExtKey, keyLayout ); diff --git a/reactos/subsys/win32k/ntuser/message.c b/reactos/subsys/win32k/ntuser/message.c index 8be6d2be46b..427a14995f8 100644 --- a/reactos/subsys/win32k/ntuser/message.c +++ b/reactos/subsys/win32k/ntuser/message.c @@ -177,7 +177,7 @@ MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam, LPARAM lParam) return Size; } -static FASTCALL NTSTATUS +static NTSTATUS PackParam(LPARAM *lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam) { NCCALCSIZE_PARAMS *UnpackedNcCalcsize; @@ -260,7 +260,7 @@ PackParam(LPARAM *lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam) return STATUS_SUCCESS; } -static FASTCALL NTSTATUS +static NTSTATUS UnpackParam(LPARAM lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam) { NCCALCSIZE_PARAMS *UnpackedParams; @@ -670,6 +670,7 @@ co_IntPeekMessage(PUSER_MESSAGE Msg, PUSER_MESSAGE Message; BOOL Present, RemoveMessages; USER_REFERENCE_ENTRY Ref; + USHORT HitTest; /* The queues and order in which they are checked are documented in the MSDN article on GetMessage() */ @@ -817,7 +818,6 @@ MessageFound: return TRUE; } - USHORT HitTest; if((Msg->Msg.hwnd && Msg->Msg.message >= WM_MOUSEFIRST && Msg->Msg.message <= WM_MOUSELAST) && co_IntTranslateMouseMessage(ThreadQueue, &Msg->Msg, &HitTest, FALSE)) /* FIXME - check message filter again, if the message doesn't match anymore, diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index d61e0816a2d..7fbed7e9ff1 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -176,6 +176,7 @@ NtUserCallOneParam( DWORD Routine) { DECLARE_RETURN(DWORD); + PDC dc; DPRINT("Enter NtUserCallOneParam\n"); @@ -198,7 +199,7 @@ NtUserCallOneParam( return showpointer; /* No mouse */ } - PDC dc = DC_LockDc(Screen); + dc = DC_LockDc(Screen); if (!dc) { @@ -1019,7 +1020,6 @@ IntSystemParametersInfo( the bitmap. We'll change it's ownership to system and replace it with the current wallpaper bitmap */ HBITMAP hOldBitmap, hNewBitmap; - ASSERT(pvParam); UNICODE_STRING Key = RTL_CONSTANT_STRING(L"Control Panel\\Desktop"); UNICODE_STRING Tile = RTL_CONSTANT_STRING(L"TileWallpaper"); UNICODE_STRING Style = RTL_CONSTANT_STRING(L"WallpaperStyle"); @@ -1034,7 +1034,8 @@ IntSystemParametersInfo( ULONG ResLength = 0; ULONG TileNum = 0; ULONG StyleNum = 0; - + ASSERT(pvParam); + hNewBitmap = *(HBITMAP*)pvParam; if(hNewBitmap != NULL) { diff --git a/reactos/subsys/win32k/ntuser/msgqueue.c b/reactos/subsys/win32k/ntuser/msgqueue.c index f9b6dd9f9e1..2b2c7f46ca2 100644 --- a/reactos/subsys/win32k/ntuser/msgqueue.c +++ b/reactos/subsys/win32k/ntuser/msgqueue.c @@ -259,7 +259,7 @@ MsqIsDblClk(LPMSG Msg, BOOL Remove) return Res; } -BOOL STATIC STDCALL +BOOL static STDCALL co_MsqTranslateMouseMessage(PUSER_MESSAGE_QUEUE MessageQueue, HWND hWnd, UINT FilterLow, UINT FilterHigh, PUSER_MESSAGE Message, BOOL Remove, PBOOL Freed, PWINDOW_OBJECT ScopeWin, PPOINT ScreenPoint, BOOL FromGlobalQueue) diff --git a/reactos/subsys/win32k/ntuser/painting.c b/reactos/subsys/win32k/ntuser/painting.c index 4dfece994fa..9faaa1e76be 100644 --- a/reactos/subsys/win32k/ntuser/painting.c +++ b/reactos/subsys/win32k/ntuser/painting.c @@ -218,7 +218,7 @@ IntGetNCUpdateRgn(PWINDOW_OBJECT Window, BOOL Validate) * Internal function used by IntRedrawWindow. */ -STATIC VOID FASTCALL +static VOID FASTCALL co_IntPaintWindows(PWINDOW_OBJECT Window, ULONG Flags) { HDC hDC; diff --git a/reactos/subsys/win32k/ntuser/windc.c b/reactos/subsys/win32k/ntuser/windc.c index 7d37f0ed384..4b772531076 100644 --- a/reactos/subsys/win32k/ntuser/windc.c +++ b/reactos/subsys/win32k/ntuser/windc.c @@ -155,7 +155,7 @@ DceAllocDCE(PWINDOW_OBJECT Window OPTIONAL, DCE_TYPE Type) return(Dce); } -VOID STATIC STDCALL +VOID static STDCALL DceSetDrawable(PWINDOW_OBJECT Window OPTIONAL, HDC hDC, ULONG Flags, BOOL SetClipOrigin) { @@ -185,7 +185,7 @@ DceSetDrawable(PWINDOW_OBJECT Window OPTIONAL, HDC hDC, ULONG Flags, } -STATIC VOID FASTCALL +static VOID FASTCALL DceDeleteClipRgn(DCE* Dce) { Dce->DCXFlags &= ~(DCX_EXCLUDERGN | DCX_INTERSECTRGN); @@ -205,7 +205,7 @@ DceDeleteClipRgn(DCE* Dce) Dce->DCXFlags |= DCX_DCEDIRTY; } -STATIC INT FASTCALL +static INT FASTCALL DceReleaseDC(DCE* dce, BOOL EndPaint) { if (DCX_DCEBUSY != (dce->DCXFlags & (DCX_DCEEMPTY | DCX_DCEBUSY))) @@ -241,7 +241,7 @@ DceReleaseDC(DCE* dce, BOOL EndPaint) return 1; } -STATIC VOID FASTCALL +static VOID FASTCALL DceUpdateVisRgn(DCE *Dce, PWINDOW_OBJECT Window, ULONG Flags) { HANDLE hRgnVisible = NULL; diff --git a/reactos/subsys/win32k/ntuser/winpos.c b/reactos/subsys/win32k/ntuser/winpos.c index 5d2ad61ac54..47339780a0b 100644 --- a/reactos/subsys/win32k/ntuser/winpos.c +++ b/reactos/subsys/win32k/ntuser/winpos.c @@ -248,7 +248,7 @@ co_WinPosArrangeIconicWindows(PWINDOW_OBJECT parent) } -VOID STATIC FASTCALL +VOID static FASTCALL WinPosFindIconPos(PWINDOW_OBJECT Window, POINT *Pos) { /* FIXME */ diff --git a/reactos/subsys/win32k/objects/bitmaps.c b/reactos/subsys/win32k/objects/bitmaps.c index 78441a48aa6..121ba6d5489 100644 --- a/reactos/subsys/win32k/objects/bitmaps.c +++ b/reactos/subsys/win32k/objects/bitmaps.c @@ -159,7 +159,7 @@ NtGdiBitBlt( SetLastWin32Error(ERROR_INVALID_HANDLE); return FALSE; } - BrushOrigin = BrushObj->ptOrigin; + BrushOrigin = *((PPOINTL)&BrushObj->ptOrigin); IntGdiInitBrushInstance(&BrushInst, BrushObj, DCDest->XlateBrush); } else @@ -400,7 +400,7 @@ done: return Ret; } -static FASTCALL HBITMAP +static HBITMAP IntCreateBitmapIndirect(CONST BITMAP *BM) { PBITMAPOBJ bmp; @@ -655,6 +655,7 @@ NtGdiGetPixel(HDC hDC, INT XPos, INT YPos) SURFOBJ *SurfaceObject; HPALETTE Pal = 0; XLATEOBJ *XlateObj; + HBITMAP hBmpTmp; dc = DC_LockDc (hDC); @@ -707,7 +708,7 @@ NtGdiGetPixel(HDC hDC, INT XPos, INT YPos) static const BITMAPINFOHEADER bih = { sizeof(BITMAPINFOHEADER), 1, 1, 1, 32, BI_RGB, 0, 0, 0, 0, 0 }; BITMAPINFO bi; RtlMoveMemory ( &(bi.bmiHeader), &bih, sizeof(bih) ); - HBITMAP hBmpTmp = NtGdiCreateDIBitmap ( hDC, &bi.bmiHeader, 0, NULL, &bi, DIB_RGB_COLORS ); + hBmpTmp = NtGdiCreateDIBitmap ( hDC, &bi.bmiHeader, 0, NULL, &bi, DIB_RGB_COLORS ); //HBITMAP hBmpTmp = NtGdiCreateBitmap ( 1, 1, 1, 32, NULL); if ( hBmpTmp ) { @@ -1349,8 +1350,9 @@ NtGdiAlphaBlend( RECTL DestRect, SourceRect; BOOL Status; XLATEOBJ *XlateObj; - BLENDOBJ BlendObj = {BlendFunc}; + BLENDOBJ BlendObj; HPALETTE SourcePalette = 0, DestPalette = 0; + BlendObj.BlendFunction = BlendFunc; DCDest = DC_LockDc(hDCDest); if (NULL == DCDest) diff --git a/reactos/subsys/win32k/objects/fillshap.c b/reactos/subsys/win32k/objects/fillshap.c index 6a1a1fc9fe2..a5e995594cf 100644 --- a/reactos/subsys/win32k/objects/fillshap.c +++ b/reactos/subsys/win32k/objects/fillshap.c @@ -1176,6 +1176,7 @@ IntRoundRect( PGDIBRUSHOBJ PenBrushObj, FillBrushObj; GDIBRUSHINST FillBrushInst, PenBrushInst; RECTL RectBounds; + int potential_steps; int i, col, row, width, height, x1, x1start, x2, x2start, y1, y2; int xradius, yradius; //float aspect_square; @@ -1338,7 +1339,7 @@ IntRoundRect( d -= ddec; } - int potential_steps = ( a_square * row ) / b_square - col + 1; + potential_steps = ( a_square * row ) / b_square - col + 1; while ( d < 0 && potential_steps-- ) { d += dinc; /* two_b_square * (3 + (col << 1)); */ diff --git a/reactos/subsys/win32k/objects/pen.c b/reactos/subsys/win32k/objects/pen.c index 298271fff30..d292435bd72 100644 --- a/reactos/subsys/win32k/objects/pen.c +++ b/reactos/subsys/win32k/objects/pen.c @@ -136,10 +136,10 @@ NtGdiExtCreatePen( IN BOOL bOldStylePen, IN OPTIONAL HBRUSH hbrush) { + LOGPEN LogPen; /* NOTE: This is HACK! */ DPRINT1("FIXME: FIX CALLERS FIRST!\n"); KEBUGCHECK(0); - LOGPEN LogPen; if (PenStyle & PS_USERSTYLE) PenStyle = (PenStyle & ~PS_STYLE_MASK) | PS_SOLID; diff --git a/reactos/subsys/win32k/objects/polyfill.c b/reactos/subsys/win32k/objects/polyfill.c index ddc9b356ad3..e5492e563c1 100644 --- a/reactos/subsys/win32k/objects/polyfill.c +++ b/reactos/subsys/win32k/objects/polyfill.c @@ -32,7 +32,7 @@ #define NDEBUG #include -INT abs(INT nm); +INT __cdecl abs(INT nm); #define FILL_EDGE_ALLOC_TAG 0x45465044 @@ -562,8 +562,7 @@ FillPolygon( int ScanLine; void - STDCALL - (*FillScanLine)( + (STDCALL *FillScanLine)( PDC dc, int ScanLine, FILL_EDGE* ActiveHead, diff --git a/reactos/subsys/win32k/objects/region.c b/reactos/subsys/win32k/objects/region.c index 020789d09e3..2b9912a4068 100644 --- a/reactos/subsys/win32k/objects/region.c +++ b/reactos/subsys/win32k/objects/region.c @@ -427,8 +427,8 @@ static __inline int xmemcheck(ROSRGNDATA *reg, PRECT *rect, PRECT *firstrect ) { #define MEMCHECK(reg, rect, firstrect) xmemcheck(reg,&(rect),(LPRECT *)&(firstrect)) -typedef void FASTCALL (*overlapProcp)(PROSRGNDATA, PRECT, PRECT, PRECT, PRECT, INT, INT); -typedef void FASTCALL (*nonOverlapProcp)(PROSRGNDATA, PRECT, PRECT, INT, INT); +typedef void (FASTCALL *overlapProcp)(PROSRGNDATA, PRECT, PRECT, PRECT, PRECT, INT, INT); +typedef void (FASTCALL *nonOverlapProcp)(PROSRGNDATA, PRECT, PRECT, INT, INT); // Number of points to buffer before sending them off to scanlines() : Must be an even number #define NUMPTSTOBUFFER 200 diff --git a/reactos/subsys/win32k/w32k.h b/reactos/subsys/win32k/w32k.h index 4d05c518505..8ab1b0b2dbf 100644 --- a/reactos/subsys/win32k/w32k.h +++ b/reactos/subsys/win32k/w32k.h @@ -24,12 +24,15 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; #define STARTF_USEPOSITION 4 #include #include +#include #include #include #include #include #include #include +#define _NOCSECT_TYPE +#include /* SEH Support with PSEH */ #include @@ -57,3 +60,11 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; /* Internal Win32K Header */ #include "include/win32k.h" +/* Undocumented stuff */ +typedef DRIVEROBJ *PDRIVEROBJ; +#define WM_SYSTIMER 280 +#ifndef M_PI +#define M_PI 3.14159265358979323846f +#define M_PI_2 1.57079632679489661923 +#endif + diff --git a/reactos/subsys/win32k/win32k.xml b/reactos/subsys/win32k/win32k.xml index 0cc7df478a1..72ced55397b 100644 --- a/reactos/subsys/win32k/win32k.xml +++ b/reactos/subsys/win32k/win32k.xml @@ -63,6 +63,13 @@ math.c copy.c + + cos_asm.s + sin_asm.s + atan2_asm.s + floor_asm.s + ceil_asm.s +