|
|
(5 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
− | [[:Category:System_Services]]
| + | {{stub}} |
| + | '''Kernel-mode subsystem server (Win32K)''' |
| | | |
− | '''See [[Arwinss]] page for the alternative win32 subsystem implementation effort.'''
| + | 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 <code>win32k.sys</code> which communicates directly with the graphics driver. |
| | | |
− | '''See also [[Win32k_design_guideline]]'''
| + | {{Code history|subsystems/win32/win32k}} |
| | | |
− | Kernel-mode subsystem server (Win32K)
| + | == See also == |
| + | * [[Arwinss]] page for the alternative win32 subsystem implementation effort. |
| + | * [[Win32k design guideline]] |
| + | * [[Csrss.exe|User-mode subsystem server]] |
| + | * [[wikipedia:Windows API#Overview]] |
| | | |
− | See also [[Csrss.exe|User-mode subsystem server]]
| + | [[Category:Development]] |
− | | + | [[Category:Drivers]] |
− | http://en.wikipedia.org/wiki/Windows_API#Overview
| + | [[Category:System Services]] |
− | | |
− | 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
| |
− | | |
− | [[ChangeLog-0.0.21]]
| |
− | * 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]]
| |
− | | |
− | [[ChangeLog-0.1.0]]
| |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.1.1]]
| |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.1.4]]
| |
− | | |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.1.5]]
| |
− | | |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.0]]
| |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.1]]
| |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.2]]
| |
− | *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]])
| |
− | | |
− | [[ChangeLog-0.2.3]]
| |
− | | |
− | *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]])
| |
− | | |
− | [[ChangeLog-0.2.4]]
| |
− | | |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.5]]
| |
− | | |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.6]]
| |
− | | |
− | * 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]])
| |
− | | |
− | [[ChangeLog-0.2.8]]
| |
− | | |
− | * Implement OffsetClipRgn ([[Thomas Weidenmueller]])
| |
− | * Add generation of 8/32bpp DIB code ([[Gé van Geldorp]])
| |
− | * Fix DIB memory leak ([[Gé van Geldorp]])
| |
− | * Send window-bound timers to the correct message queue ([[Gé van Geldorp]])
| |
− | * Use the pitch provided by FreeType ([[Gé van Geldorp]])
| |
− | * SetPixel should return the new color ([[Jeffrey Morlan]])
| |
− | * Make sure we don't hang forever when activating a window belonging to another thread ([[Gé van Geldorp]])
| |
− | * Inform HAL about the switch to graphics mode as late as possible ([[Gé van Geldorp]])
| |
− | * Destroy the desktop window during shutdown ([[Gé van Geldorp]])
| |
− | * Make FindWindow case insensitive ([[Gé van Geldorp]])
| |
− | * partial implementation of ShowWindowAsync() to activate the Explorer desktop switcher ([[Martin Fuchs]])
| |
− | * Fix an issue in the menu code which was causing WinRAR and other applications not to load ([[Alex Ionescu]])
| |