Difference between revisions of "Win32k.sys"
BrentNewland (talk | contribs) m |
BrentNewland (talk | contribs) m |
||
Line 4: | Line 4: | ||
'''See also [[Win32k_design_guideline]]''' | '''See also [[Win32k_design_guideline]]''' | ||
+ | |||
+ | Kernel-mode subsystem server (Win32K) | ||
http://en.wikipedia.org/wiki/Windows_API#Overview | http://en.wikipedia.org/wiki/Windows_API#Overview | ||
Line 444: | Line 446: | ||
* Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. ([[Magnus Olsen]]) | * Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. ([[Magnus Olsen]]) | ||
+ | |||
+ | [[ChangeLog-0.2.7]] | ||
+ | |||
+ | ([[Magnus Olsen]]) | ||
+ | * Implemented <code>NtGdiDdCanCreateSurface</code> and <code>NtGdiDdBlt</code> for DirectX™ (untested) | ||
+ | * Expanded <code>StretchBitBlt</code> to all bit-per-pixel (BPP) settings (not yet fully implemented; use the code as a reference) | ||
+ | * partially implemented fullscreen in changedisplay setting—I can play winquake™ in fullscreen now :) | ||
+ | * Implemented <code>NtGdiGetSystemPaletteUse</code> and <code>NtGdiSetSystemPaletteUse</code> (this code has been taken from Wine) | ||
+ | * Fixed winquake color glitch bug—the text is now white instead of black ([[Magnus Olsen]]) | ||
+ | * Implemented <code>NtGdiAnimatePalette</code> (partly ripped from Wine; does not animate 100% of the palette) ([[Hervé Poussineau]]) | ||
+ | * Speed-optimized the bitblt ([[Magnus Olsen]], [[Gregor Anich]]), [[Alex Ionescu]]), [[Gé van Geldorp]]) (''see svn log'') | ||
+ | * Repaired GDI to handle debugging functionality ([[Filip Navara]]) | ||
+ | * Implemented <code>NtGdiUnrealizedObject</code> ([[James Tabor]]) | ||
+ | * Implemented <code>WH_KEYBOARD_LL</code> hook ([[Gé van Geldorp]]) |
Revision as of 07:02, 17 March 2012
See Arwinss page for the alternative win32 subsystem implementation effort.
See also Win32k_design_guideline
Kernel-mode subsystem server (Win32K)
http://en.wikipedia.org/wiki/Windows_API#Overview
The Graphics Device Interface Provides functionality for outputting graphical content to monitors, printers and other output devices. It resides in gdi.exe on 16-bit Windows, and gdi32.dll on 32-bit Windows in user-mode. Kernel-mode GDI support is provided by win32k.sys which communicates directly with the graphics driver.
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/?view=log
- Win32k: Initial implementation of regions and clipping
- Win32k: Object cleanup on process deletion Eugene Ingerman
- Win32k: Initial window painting code, bitmap loading David Welch
- Win32k: Callbacks and messaging improvements David Welch
- Win32k: Mouse messaging David Welch
- Win32k: DIB Fixes Jason Filby
- Win32k: Rewrote gdi (Engxxx) objects,
- Made GDI object locking exclusive,
- Added functions for locking multiple objects,
- Color translation now works properly,
- Implemented several DC functions (Eugene Ingerman)
- Win32k: Initial scrollbar code (Jason Filby)
- Win32k: Support for VMware video drivers (Gé van Geldorp)
- Win32k: VGA Driver loaded from registry key (Gé van Geldorp)
- Win32k: Support for MS VGA driver under VMware (Gé van Geldorp)
- Win32k: Add support for 8-bit and 32-bit displays (Gé van Geldorp)
- Win32k: Switch back to the command prompt when pressing Close button (Gé van Geldorp)
- Win32k: Implemented several window positioning functions (Richard Campbell)
- Win32k: InvalidateRgn, InvalidateRect, PolyLine (Tim Jobling)
- Win32k: Added support for allocating a DCE for each window (Richard Campbell)
- Scrollbar thumbs (Thomas Weidenmueller)
- Implemented several scrollbar functions (Thomas Weidenmueller)
- Improved mouse (buttons) handling (Thomas Weidenmueller)
- RoundRect (Royce Mitchell III)
- Implemented partial ReleaseDC() (Gé van Geldorp)
- Fix 1bbp blits (Filip Navara)
- Implement GUI consoles (Gé van Geldorp)
- Resolution and screen depth change support for VMWare (Gé van Geldorp)
- DirectDraw groundwork (Peter Bajusz)
- Window activation/focus (Filip Navara, Gé van Geldorp)
- StretchDIBits implementation (Filip Navara)
- Initial implementation of message hooks (Gé van Geldorp)
- Support for the FR_PRIVATE and FR_NOT_ENUM flags for AddFontResourceEx (Thomas Weidenmueller)
- Implement real locking for GDIOBJ objects (Gé van Geldorp)
- Stretchblitting 32->32, 8->8 bpp implemented (Aleksey Bragin)
- GetMessageExtraInfo and SetMessageExtraInfo implementations (Thomas Weidenmueller)
- Initial implementation of maximize/restore and minimize buttons for windows (Thomas Weidenmueller)
- Implemented WM_SETCURSOR messages (Thomas Weidenmueller)
- Serialize access to display driver (Gé van Geldorp)
- Implemented SetCursor and rewrote some cursor/icon routines (Thomas Weidenmueller)
- Support for RASTERCAPS in NtGdiGetDeviceCaps (Filip Navara)
- RLE4/8 Bitmap Compression support (Jonathan Wilson)
- LR_SHARED flag support for LoadIcon and LoadCursor (Thomas Weidenmueller)
- Rewritten painting implementation (Filip Navara)
- Font smoothing implementation (Thomas Weidenmueller)
- GetGUIThreadInfo implementation (Thomas Weidenmueller)
- EnumProps, EnumPropsEx implementations (Thomas Weidenmueller)
- Marshall messages across process boundaries (not complete yet) and generalize message sending from kernel (Gé van Geldorp)
- Initial NtGdiStretchBlt implementation (Aleksey Bragin)
- Message queue fixes (Thomas Weidenmueller, Mike Nordell)
- Palette fixes (Filip Navara)
- Move desktop window proc from WIN32K to CSRSS (Gé van Geldorp)
- Fixed window activation bug (GA_ROOTOWNER -> GA_ROOT) (Filip Navara)
- Preparing for the win32k emulated mouse cursor support (Filip Navara)
- Implemented MenuItemFromPoint() (Thomas Weidenmueller)
- Fixed hittest-code so it returns HTMENU properly (Thomas Weidenmueller)
- Implemented multiline menu bars (Thomas Weidenmueller)
- Release mutex on error exit (Gé van Geldorp)
- GetAncestor() doesn't set a last-error if the handle passed is the desktop window, it just returns NULL (Thomas Weidenmueller)
- Don't activate disabled windows (Thomas Weidenmueller)
- Release window object when destroying window children and skip only children that have a different parent window (Thomas Weidenmueller)
- Activate modal dialog when clicking on a disabled window (Thomas Weidenmueller)
- Fix cross-thread WM_SETTEXT messages (Gé van Geldorp)
- Dynamically load fonts on startup
- Seperated the Caption font and the icon title font (Richard Campbell)
- Fixed missing release of window objects (Thomas Weidenmueller)
- Resolve two GDI handle leaks (Filip Navara)
- Faster GDI handle allocation strategy (Filip Navara)
- Update DC when moving a window. Fixes bug #5 (Gé van Geldorp, Filip Navara)
- Handle NULL window as special case when computing visible region for GetDC. Fixes bug #59 (Gé van Geldorp)
- Fix NtUserScroll[WindowEx/DC] (Filip Navara)
- Implemented ChildWindowFromPoint(Ex) (Richard Campbell)
- Rewritten NtGdiEllipse with improved and optimized algorithm (Filip Navara)
- Use window thread instead of current thread to obtain desktop (Gé van Geldorp)
- Fix race condition when one thread changes the update region of a window and another thread retrieves a paint message for that window (Gé van Geldorp)
- Don't callback from kernel to usermode if the thread is exiting; fixes bug #83 (Gé van Geldorp)
- Clip region to be bitblt'ed against the valid source region. Fixes bug #152 (Gé van Geldorp)
- Fixed software mouse pointer handling to work correctly with MouseSafety* routines (Filip Navara)
- Fixed algorithm for 4BPP bitblts with ROP != SRCCOPY (Filip Navara)
- Reclaculate window client size in NtUserSetMenu even if the window isn't visible (Filip Navara)
- Properly move child windows in NtUserSetWindowPos (Filip Navara)
- Very basic implementation of ExtEscape (Filip Navara)
- Fix race condition resulting in WM_xBUTTONUP sometimes being delivered before WM_xBUTTONDOWN (Gé van Geldorp)
- Fix double click (Gé van Geldorp)
- Implemented horizontal and vertical gradients in GradientFill() (Thomas Weidenmueller)
- Use GradientFill() for gradient captions (Thomas Weidenmueller)
- Don't copy from/to outside the visible screen region (Gé van Geldorp)
- Return more correct error codes from NtUserRegisterClassExWOW (Filip Navara)
- Delete atom in NtUserUnregisterClass (Filip Navara)
- Corrected DC locking in NtGdiSetDIBColorTable (Filip Navara)
- Check region handles in NtGdiPaintRgn (Filip Navara)
- Added EngGetCurrentProcessId() and EngGetCurrentThreadId() (Thomas Weidenmueller)
- Fixed clipping code in NtGdiGetPixel (James Pritchard)
- Fix distortion by StretchBlt (Filip Navara, Waldo Alvarez Cañizares)
- Implement menu handling (Gé van Geldorp)
- Top level windows have menus, child windows have IDs (Gé van Geldorp)
- SPI_GETNONCLIENTMETRICS and SPI_GETICONTITLELOGFONT now load their settings from the registry (Richard Campbell)
- Fixed WindowFromPoint() to search backwards (Thomas Weidenmueller)
- Fixed 8 8 bpp, 1616 bpp and 32 32 bpp stretchblitting (Waldo Alvarez Cañizares)
- Added pool tags for better debugging (Thomas Weidenmueller)
- Fixed a few race conditions in painting code (Filip Navara)
- Fix double release of fast mutex (Gé van Geldorp)
- Fixed releasing of window object in IntValidateParent and NtUserRedrawWindow (Thomas Weidenmueller)
- Fixed potencial deadlock in IntPaintWindows (Thomas Weidenmueller)
- Modifed DceUpdateVisRgn to correctly handle situations when DceGetVisRgn returns NULL (Filip Navara)
- Fixed the alternative version of VIS_ComputeVisibleRegion and made it the one and only, because it's smaller and faster than the original one (Filip Navara)
- Prevent double unlinking of window (Filip Navara)
- Implement keyboard navigation for menus (Gé van Geldorp)
- Fix mono -> color bitblts (Gé van Geldorp)
- Fixed WindowFromPoint() to send WM_NCHITTEST messages to windows that belong to the current process (Thomas Weidenmueller)
- Fix bug #129 (Filip Navara)
- Fixed bug 167 (Art Yerkes)
- Fix race condition resulting in WM_xBUTTONUP sometimes being broken (Ge van Geldorp)
- Don't copy from/to outside the visible screen region (Ge van Geldorp)
- Implement menu handling (Ge van Geldorp)
- Top level windows have menus, child windows have IDs (Ge van Geldorp)
- Fix double release of fast mutex (Ge van Geldorp)
- Implement keyboard navigation for menus (Ge van Geldorp)
- Fix race condition (Ge van Geldorp)
- Recursively search sub menus when a command id is specified (Ge van Geldorp)
- Fixed mono -> color bitblts (Ge van Geldorp)
- Correct menu bars for windows not originating at top-left of screen (Ge van Geldorp)
- Mark update regions as global objects (Ge van Geldorp)
- Delay unlinking of windows until after all messages have been sent (Ge van Geldorp)
- Translate pixel value from internal pixel format to RGB; fixes bug #251 (Ge van Geldorp)
- Return a valid (empty) visible region when the window is not visible (Ge van Geldorp)
- Handle 1bpp DIBs in NtGdiCreateDIBitmap (Ge van Geldorp)
- Implement EnumFontFamilies(Ex)A/W() and TranslateCharsetInfo() (Ge van Geldorp)
- Implement GetCharWidthA/W() (Ge van Geldorp)
- Implement GetUpdateRect() and harden NtUserGetUpdateRect() (Ge van Geldorp)
- Implement GetObjectA/W() for fonts (Ge van Geldorp)
- Prevent deletion of system-owned objects (Ge van Geldorp)
- Fix filling of MENUITEMINFO in InsertMenu() (Ge van Geldorp)
- Implement scrollbar controls (Ge van Geldorp)
- Simple font substitution and matching (Ge van Geldorp)
- Implement TOPMOST windows (Ge van Geldorp)
- Remove window timers when window is destroyed (Ge van Geldorp)
- Implement 32bpp -> 32bpp copy with color translation (Ge van Geldorp)
- Use lookaside lists for better performance (Ge van Geldorp)
- Special case for faster one rectangle regions (Ge van Geldorp)
- Honour font spacing requested by caller (Ge van Geldorp)
- Fix scanline increment for 32bpp stretch blts (Ge van Geldorp)
- andle regions in SelectObject() (Ge van Geldorp)
- Pass args to MsqSendMessage in correct order (Ge van Geldorp)
- Fix for mouse detection problem (Filip Navara)
- Fixed algorithm for 4BPP bitblts with ROP != SRCCOPY (Filip Navara)
- Reclaculate window client size in NtUserSetMenu even if the window isn't visible (Filip Navara)
- Fixed clipping bug in TransparentBlt() (Filip Navara)
- Return more correct error codes from NtUserRegisterClassExWOW (Filip Navara)
- Check region handles in NtGdiPaintRgn (Filip Navara)
- Fixed releasing of window object in IntValidateParent and NtUserRedrawWindow (Filip Navara)
- Fixed deadlock in IntFindWindowToRepaint (Filip Navara)
- Modifed DceUpdateVisRgn for performance enhancment (Filip Navara)
- Fixed couple of mutex locking issues (Filip Navara)
- Fixed GDI handle leak (Filip Navara)
- Fix for race condition that should never happen (Filip Navara)
- Implemented EngModifySurface, DRIVER_FindMPDriver (Filip Navara)
- Fixed NtGdiCreateCompatibleBitmap fix to use correct Bits (Filip Navara)
- Minor corrections to emulated mouse pointer handling (Filip Navara)
- Fixed few bugs related to SUROBJ initialization (Filip Navara)
- Unlock surface in error case of EngModifySurface (Filip Navara)
- Fixed non-SRCCOPY BitBlts to 1bpp surfaces (Filip Navara)
- Fixed BitBlts from 4bpp surfaces (Filip Navara)
- Fixed handling of WM_GETICON message (Filip Navara)
- Fixed window-less timers (Filip Navara)
- Changed the internal brush object to be (almost) Win32k compatible (Filip Navara)
- Fixed 8bpp StretchBlt (Filip Navara)
- Fixed 4bpp to 4bpp non-SRCCOPY blits (Filip Navara)
- Fixed 1bpp to 1bpp non-SRCCOPY blits to work when the destination doesn't start at exact byte (Filip Navara)
- Reenabled 55AA brush for scrollbar (Filip Navara)
- Fixed BITMAPOBJ_GetWidthBits to do WORD alignment and not DWORD (Filip Navara)
- Implemented TransparentBlt() on 32bpp surfaces (Filip Navara)
- Fixed bugs in 1bpp code causing memory corruption (Filip Navara)
- Lock the surface even for GDI blits in IntEngBitBlt (Filip Navara)
- Fixed order of bits in a byte for pattern brushes (Filip Navara)
- Implement brush origin for 4bpp blits (Filip Navara)
- Implemented horizontal and vertical gradients in GradientFill() (Thomas Weidenmueller)
- Use GradientFill() for gradient captions (Thomas Weidenmueller)
- Basic implementation of filling gradient triangles in GradientFill() (Thomas Weidenmueller)
- Added EngGetCurrentProcessId() and EngGetCurrentThreadId() (Thomas Weidenmueller)
- Fixed WindowFromPoint() to search backwards (Thomas Weidenmueller)
- Added pool tags for better debugging (Thomas Weidenmueller)
- Fixed WindowFromPoint() to send WM_NCHITTEST messages appropriately (Thomas Weidenmueller)
- Fixed crashes that could be caused by the thread cleanup routine when destroying (Thomas Weidenmueller)
- Fixed missing window dereference (Thomas Weidenmueller)
- Don't lock the screen dc if it's NULL (Thomas Weidenmueller)
- Don't hold more than one WM_MOUSEMOVE message at the same time in the message queue (Thomas Weidenmueller)
- Added ability to cache gdi objects (Thomas Weidenmueller)
- First attempt to implement SendMessageTimeout() (Thomas Weidenmueller)
- Simplified calls to MsqPostMessage() (Thomas Weidenmueller)
- Count all gdi handles and serialize removing gdi handles from the table. (Thomas Weidenmueller)
- Fixed wrong rendering of clipped characters (Thomas Weidenmueller)
- Fixed a couple of dead-locks in the region code (Thomas Weidenmueller)
- Implemented SetWindowRgn() and added support for window regions (Thomas Weidenmueller)
- Don't use the window region when minimized (Thomas Weidenmueller)
- Implemented GetWindowRgn() and GetWindowRgnBox() (Thomas Weidenmueller)
- Fixed accessing memory that has already been freed (Thomas Weidenmueller)
- Fixed a crash caused by removing a message twice from the queue (Thomas Weidenmueller)
- Partly (not working) implementation of TransparentBlt() (Thomas Weidenmueller)
- Fixed NtUserGetAncestor() (Thomas Weidenmueller)
- Implemented GetWindowInfo() (Thomas Weidenmueller)
- Implemented GetWindowModuleFileName() (Thomas Weidenmueller)
- Partially implemented IsHungAppWindow() (Thomas Weidenmueller)
- Fixed a crash caused by requesting a large number of extra class space (Thomas Weidenmueller)
- Made the DCE list thread-safe (Thomas Weidenmueller)
- Implemented TransparentBlt() on 8bpp, 16bpp and 24bpp surfaces (Thomas Weidenmueller)
- Fixed missing dereferences of threads (Thomas Weidenmueller)
- Fixed clipping code in NtGdiGetPixel (James Pritchard)
- Fix bug in NtGdiExtEscape not checking for NULL == DriverFunctions.Escape (Royce Mitchell III)
- If nWidth or nHeight is zero, CreateBitmap returns the handle to a 1by 1-pixel (Royce Mitchell III)
- Fix RoundRect compatibility issue (Royce Mitchell III and MT)
- NtGdiPolygon simplification (Royce Mitchell III)
- Performance improvement for 1bpp dib -> 1bpp dib blitting (Royce Mitchell III)
- Change to NtGdiGetPixel to handle device DCs (Royce Mitchell III)
- Implement SetPixelV (Royce Mitchell III)
- Implemented event services (David Welch)
- Added an implementation of LdrFindImageProcAddress (David Welch)
- Return any error code from the miniport device i/o control to the display driver; fixes crash when running with ATI drivers (David Welch)
- Fixed 8 8 bpp and 32 32 bpp StretchBlt (Waldo Alvarez Cares)
- Fixed IntGdiExtEscape (Anich Gregor)
- Initialized the win32k timer as SynchronizationTimer (Hartmut Birr)
- Fixed the access to an uninitialized variable in IntCreateClass (Hartmut Birr)
- Convert between RGBQUAD and PALETTEENTRY (Ge van Geldorp)
- Handle RLE bottom-up dibs (Ge van Geldorp)
- Fixed NtUserDestroyWindow to correctly destroy owned windows. Fixes bugs #342 and #350 (Filip Navara)
- Activate window on non-client click too (Ge van Geldorp)
- Don't activate invisible windows (Ge van Geldorp)
- Prefer non-topmost windows when activating another window (Ge van Geldorp)
- Call the "load default cursor" callback. Fixes bug #358 (Filip Navara)
- Allocate memory from PagedPool instead of NonPagedPool where possible (Filip Navara)
- Backported font initialization code with fixed memory leaks from my unfinished font handling rewrite patch (Filip Navara)
- Don't change DC origin in NtGdiOffsetViewportOrgEx (Filip Navara)
- Update transformation matrix in NtGdiSetViewportExtEx, NtGdiSetWindowExtEx, NtGdiSetWindowOrgEx, NtGdiOffsetWindowOrgEx (Filip Navara)
- When creating new DC initialize the Viewport/Window extensions (Filip Navara)
- Transform logical coordinates to device ones in NtGdiExtTextOut and NtGdiLineTo (Filip Navara)
- Marshall WM_CREATE/WM_NCCREATE messages (Ge van Geldorp)
- Set MaximumLength to size of allocated memory (Ge van Geldorp)
- Update trasformation matrix in SetViewportOrgEx (Filip Navara)
- Fixed NtUserDestroyWindow to correctly destroy owned windows. Fixes bugs #342 and #350 (Filip Navara)
- Little GDI speed improvements (Thomas Weidenmueller)
- Fixed missing class dereferencings and store a list of windows in the class object (Thomas Weidenmueller)
- Eliminate unnecessary multiplications in the inner loops of *DIB_1BPP_BitBltSrcCopy_From1BPP (Royce Mitchel III)
- Fixed unicode string copying bug in NtGdiAddFontResource (Filip Navara)
- Prepend "\\??\" to the file name in NtGdiAddFontResource (Filip Navara)
- Prevent unnecessary code where count is zero in NtGdiExtTextOut (Jason Filby)
- Work on clipboard (Pablo Borobia)
- Support for window-less hotkeys (Filip Navara)
- Send hotkeys even if there's no focus window (Filip Navara)
- Fixed returning uninitialized variable in NtGdiSelectVisRgn() and NtGdiExtSelectClipRgn() (Thomas Weidenmueller)
- Prevent memory leaks if callbacks to usermode never return (Thomas Weidenmueller)
- Disable NtGdiRealizePalette. It has a lot of bugs and really doesn't do any of the work it should do (Filip Navara)
- Safe parameter handling for PolyPolygonRgn() and PolygonRgn() (Thomas Weidenmueller)
- Fixed memory leak (Thomas Weidenmueller)
- Ported CreatePolyPolygonRgn() and CreatePolygonRgn() from wine (Thomas Weidenmueller)
- Use FASTCALL calling convention for internal routines (Thomas Weidenmueller)
- Attempt to fix handling of timed out sending of messages to be thread-safe (Thomas Weidenmueller)
- Fixed RegisterWindowMessage() (Thomas Weidenmueller)
- Set proper lasterror code in RegisterWindowMessage() (Thomas Weidenmueller)
- Fixed message timeout crash, caused by inserting dispatching messages into the wrong dispatching list (Thomas Weidenmueller)
- Implemented DisableProcessWindowsGhosting() (window ghosting is not yet implemented though) (Thomas Weidenmueller)
- Fixed cut & paste error in NtGdiGetDIBColorTable and NtGdiSetDIBColorTable (Filip Navara)
- Fixed implementation of DIB_MapPaletteColors. It shoud take palette from DC and the index array is of type PUSHORT, not PULONG (Filip Navara)
- Eng memory test (Jason Filby)
- Replaced UnsafeIntCreateRectRgnIndirect() and UnsafeIntUnionRectWithRgn() with macros to directly call the appropriate function (Thomas Weidenmueller)
- Fixed dereferencing bug (Thomas Weidenmueller)
- Fixed missing dereferencing of threads in PostThreadMessage() (Thomas Weidenmueller)
- Window Class handling fixes (Filip Navara)
- Don't use object that's already unlocked (Filip Navara)
- Fixed implementation of NtGdiGetNearestColor (Filip Navara)
- Changed cursors/icons to use the window station handle table (Thomas Weidenmueller)
- Implement complex clipping for StretchBlt (Ge van Geldorp)
- Only split update region into client and non-client parts if there actually is something to split (Ge van Geldorp)
- New implementation of GetDIBColorTable and SetDIBColorTable (Filip Navara)
- Use NtGdiBitBlt in NtGdiStretchDIBits if source and destination dimensions are equal (Filip Navara)
- Don't modify Msg's pt for mouse messages. It's supposed to be always in screen coordinates, not it client coordinates (Filip Navara)
- Check for the WS_CLIPSIBLINGS flag on the correct window (Filip Navara)
- Modify DPRINTs to print window styles in hexadecimal notation (Filip Navara)
- Fix ExtSelectClipRgn and some other clipping functions (Filip Navara)
- NtGdiCreateRectRgn should accept negative width and height. It's supposed to be handled just like in NtGdiSetRectRgn (Filip Navara)
- Don't pass garbage to RtlQueryAtomInAtomTable (Filip Navara)
- Force recalulation size of menu items when new item is added (Filip Navara)
- Make MDI injected icons working (Filip Navara)
- Minor corrections to menu code size handling (Filip Navara)
- Make WinPosSearchChildren more readable (Filip Navara)
- Allow caller to continue after NtUserOpenClipboard() (Ge van Geldorp)
- Fix scrollbar controls (Ge van Geldorp)
- GetWindowInfo() doesn't check the cbSize parameter (Thomas Weidenmueller)
- Regression-test enable win32k (Casper Hornstrup)
- Use a common header for most files in win32k to make use of precompiled headers (Thomas Weidenmueller)
- Properly handle HTTRANSPARENT hittest with mouse messages (Thomas Weidenmueller)
- Rewrote NtUserBuildHwndList() (Thomas Weidenmueller)
- Fixed GetThreadDesktop() (not fully working yet because it requires a ObFindHandleForObject() implementation in case the requested thread doesn't belong to the calling process) (Thomas Weidenmueller)
- Assign even more styles for overlapped windows (Thomas Weidenmueller)
- Handle WM_SETCUROR messages for the desktop window (Thomas Weidenmueller)
- Implemented IsWindowInDestroy() (Thomas Weidenmueller)
- Handle MENUITEMINFOW compiled with _WIN32_WINNT less than 0x0500 (MENUITEMINFOW) (Ge van Geldorp)
- Support the WS_EX_LEFTSCROLLBAR (Thomas Weidenmueller)
- Implemented RegisterLogonProcess(), LockWindowStation() and UnlockWindowStation() (Thomas Weidenmueller)
- Implemented LockWindowStation() and UnlockWindowStation() (Thomas Weidenmueller)
- Implemented AnyPopup() (Thomas Weidenmueller)
- Fixed brush origin (Thomas Weidenmueller)
- Use SendInput() to send mouse input data (Thomas Weidenmueller)
- Avoid potencial access violation (Filip Navara)
- Add ASSERT for a palette size (Filip Navara)
- Fix mouse clipping (Thomas Weidenmueller)
- Setup the cursor in the middle of the screen (Thomas Weidenmueller)
- Use only LSBit for 1bpp putpixel (Ge van Geldorp)
- Changed SetCursorPos() to use SendInput() (Thomas Weidenmueller)
- Fixed DrawFocusRect() to use values from SPI_GETFOCUSBORDERWIDTH/HEIGHT (Thomas Weidenmueller)
- Fixed NtGdiPtVisible() (Thomas Weidenmueller)
- Simplified handling of palettes selected into device contexts. Now DC's w.hPalette should always point to palette object and shoudn't be NULL (Filip Navara)
- Fixed bitfield conversion when creating Color's Mono XLATEOBJs. Fixes bug #275.
- Implemented keybd_event(), mouse_event(), BlockInput() and SendInput() - the server side however isn't implemented yet (Thomas Weidenmueller)
- Don't crash if no thread desktop set (Thomas Weidenmueller)
- Implement DDE Execute (Ge van Geldorp)
- Return NULL only in error case (Ge van Geldorp)
- Implemented GetCurrentObject() (Thomas Weidenmueller)
- Implemented PtVisible() (Thomas Weidenmueller)
- Implemented ExcludeClipRect() (Thomas Weidenmueller)
- Implemented ExtSelectClipRgn() (Thomas Weidenmueller)
- Implemented GetDCBrushColor(), SetDCBrushColor(), GetDCPenColor() and SetDCPenColor() (Thomas Weidenmueller)
- Implemented hatched brushes (Thomas Weidenmueller)
- Fixed memory leak when deleting patterned brushes (Thomas Weidenmueller)
- Use brush origin in dib code (Thomas Weidenmueller)
- Set proper errorcode in some functions (Thomas Weidenmueller)
- Fixed missing window dereferences and a minor thread-safety bug (Thomas Weidenmueller)
- Fixed some scrollbar issues (Thomas Weidenmueller)
- Implemented InvertRgn() (Thomas Weidenmueller)
- Fixed some error cases (Thomas Weidenmueller)
- Proper implementation of FrameRgn() (Thomas Weidenmueller)
- Small windowbar sizing fix for WS_EX_TOOLWINDOW (Thomas Weidenmueller, Masahiro Taguchi)
- Move SendMessage calls out of the message queue processing code (Thomas Weidenmueller)
- Fixed translation of coordinates calculation in different thread states (Thomas Weidenmueller)
- Proper implementation of Set/GetWindowText/Length() (Thomas Weidenmueller)
- Properly remove mousemove messages (Thomas Weidenmueller)
- Post focus messages to different threads (Thomas Weidenmueller)
- Properly free unicode string (Thomas Weidenmueller)
- Fixed crashes caused by an invalid pointer (Thomas Weidenmueller)
- Fixed implementation of ChildWindowFromPointEx() (Thomas Weidenmueller)
- Fixed major bugs in the message queue (Thomas Weidenmueller)
- Treat WM_NCMOUSEMOVE message as WM_MOUSEMOVE messages (Thomas Weidenmueller)
- Rewrote NtUserFindWindowEx() so it works as it's supposed to (Thomas Weidenmueller)
- Better handling of invalid strings in IntSafeCopyUnicodeString() (Thomas Weidenmueller)
- Compile Win32k using W32API [Part II]: (Filip Navara)
- Compensate BrushOrigin for translation (Ge van Geldorp)
- Handle the case where no BrushOrigin is given (Thomas Weidenmueller)
- Handle the case where no BrushOrigin is given even under EngStretchBlt and EngMaskBitBlt (Filip Navara)
- Implement NULL module case for EngFindImageProcAddress (Ge van Geldorp)
- Add stubs for EngFindImageProcAddress()able not present yet (Ge van Geldorp)
- Handle correctly bottom-up surfaces in the VGA driver. (Filip Navara)
- Stop processing if exact match is found in ClosestColorMatch. (Filip Navara)
- Fixed locking in NtGdiGetBitmapBits. (Filip Navara)
- Removed IntCopyBitmap and replaced it's usage by BITMAPOBJ_CopyBitmap. (Filip Navara)
- Fixed setting of SURFOBJ->pvBits and SURFOBJ->pvScan0 in EngCreateBitmap for bottom-up surfaces. (Filip Navara)
- Call IntEngBitBlt instead of EngBitBlt from EngCopyBits. (Filip Navara)
- Correctly set the SURFOBJ->hsurf field. (Filip Navara)
- Support for bottom-up mouse cursors in the Eng* cursor emulation routines. (Filip Navara)
- Fix locking in error cases of NtGdiRestoreDC (get Primitives demo to start). (Filip Navara)
- Fix BitmapFormat to return 0 for unknown bit depth. (Filip Navara)
- New implementation of NtGdiGetDIBits. (Filip Navara)
- Fixed buffer handling and coordinate translation in IntGdiPolyline. (Filip Navara)
- Allocate memory from paged pool in EngAllocMem. (Filip Navara)
- Support resursive locking of the GDI objects. (Filip Navara)
- Call EngMovePointer instead of DrvMovePointer if driver DrvSetPointerShape returned SPS_DECLINE. (Filip Navara)
- Don't continue execution if there is no exception handler. (Filip Navara)
- Send the cursor to display driver in top-down format. (Filip Navara)
- Guard against out of bounds access to KeyboardLayout->pusVSCtoVK in W32kKeyProcessMessage. (Filip Navara)
- Fixed SetKeyState to correctly index the keyboard state table. (Filip Navara)
- Use absolute value of the color difference when calculating color match rating. (Filip Navara)
- Handle allocation failure in IntCreateBitmap. (Filip Navara)
- Don't allow creating surface with BitmapFormat == 0 (Invalid) in IntCreateSurface. (Filip Navara)
- Fixed ExcludeClipRgn for case when DC contained no clipping region before the call to this function. (Filip Navara)
- Don't create XLATEOBJ for BitBlt and StretchBlt operations that don't use source DC. (Filip Navara)
- Honor the "Extended" bit in SetKeyState. (Filip Navara)
- Display window icon only if there is any. (Filip Navara)
- DrawIcon should return TRUE if it succeeds. (Filip Navara)
- Handle UnsafeRect == NULL case in NtUserGetUpdateRect. (Filip Navara)
- Implementation of [NtGdi]GetTextFace[W] and [NtGdi]GetFontData[W]. (Filip Navara)
- Fixed locking in NtGdiGetCharWidth32. This caused problems with AbiWord reported by Jason Filby. (Filip Navara)
- Add IntEngCreateSrcMonoXlate. (Filip Navara)
- Get rid of compiler warnings in Win32k. (Filip Navara)
- Handle indexed palettes in IntEngCreateSrcMonoXlate. (Filip Navara)
- Fix WS_CAPTION style handling. (Filip Navara)
- Maintain higher internal precision during font rendering. (Filip Navara)
- Honour bitmap->bitmap_left while rendering. (Filip Navara)
- Correctly handle ClipCursor(NULL) case. (Filip Navara)
- Implemented NtUserEnumDisplaySettings/IntEnumDisplaySettings (Gregor Anich)
- Only accept matching palette (Gé van Geldorp)
- FindWindow() should search the threads desktop, not the active one. (Gé van Geldorp)
- Implement NtUserBuildNamesList() (Gé van Geldorp)
- If SendMessageTimeout() times out, GetLastError() should return 0 (Gé van Geldorp)
- Simplified assigning of DDI functions (Thomas Weidenmueller)
- Fixed graphics (gui) checks (Thomas Weidenmueller)
- Added support to paint and change desktop wallpapers (Thomas Weidenmueller)
- Many bug fixes in win32k - significant increase in stability (Royce Mitchell III, Filip Navara)
- Implementation of monitor functions (Gregor Anich)
- GDI Handle allocation speed-up (Thomas Weidenmueller)
- Fixed a bug that caused locking a not anymore existing message queue while dispatching a message (Thomas Weidenmueller)
- Don't dispatch sent messages to windows during destruction (Thomas Weidenmueller)
- Preliminary "fixed" window class lookup so classes of other processes can be found (Thomas Weidenmueller)
- Removed some mouse cursor hacks and the ReactOS-only ENG handle table from the ENG code (Thomas Weidenmueller)
- Implemented more win2k-like and much faster gdi handle table (Thomas Weidenmueller)
- Improved inheritance of window stations/desktops where threads/processes are created in (Thomas Weidenmueller)
- Implement NtGdiDdGetDriverInfo and NtGdiDdWaitForVerticalBlank for directx. Untested yet. (Magnus Olsen)
- Implemented
NtGdiDdCanCreateSurface
andNtGdiDdBlt
for DirectX™ (untested) - Expanded
StretchBitBlt
to all bit-per-pixel (BPP) settings (not yet fully implemented; use the code as a reference) - partially implemented fullscreen in changedisplay setting—I can play winquake™ in fullscreen now :)
- Implemented
NtGdiGetSystemPaletteUse
andNtGdiSetSystemPaletteUse
(this code has been taken from Wine) - Fixed winquake color glitch bug—the text is now white instead of black (Magnus Olsen)
- Implemented
NtGdiAnimatePalette
(partly ripped from Wine; does not animate 100% of the palette) (Hervé Poussineau) - Speed-optimized the bitblt (Magnus Olsen, Gregor Anich), Alex Ionescu), Gé van Geldorp) (see svn log)
- Repaired GDI to handle debugging functionality (Filip Navara)
- Implemented
NtGdiUnrealizedObject
(James Tabor) - Implemented
WH_KEYBOARD_LL
hook (Gé van Geldorp)