Win32k.sys
Revision as of 00:50, 5 March 2012 by BrentNewland (talk | contribs)
See Arwinss page for the alternative win32 subsystem implementation effort.
See also Win32k_design_guideline
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)