* Reorganize the whole ReactOS codebase into a new layout. Discussing it will only waste time, so we better have it then talk about it after. * Put ntoskrnl and ntdll in the same folder, because they both start with nt. * Place hal next to acpi, they both deal with hardware stuff. * Move mountmgr next to usb drivers. * Put the rtl next to the crt, and share as much as possible between the two. * I'm just kidding, you know, April's fool and all ;) Here's the real deal: [WIN32SS] * And finally, integrate win32k itself into the new file layout. Now the subsystem modules are located close to each other (like gdi32 and ntgdi, or user32 and ntuser). * Thanks go to the subsystem team for coming up with this nice layout, hopefully this will scale to the whole codebase layout soon. * Special thanks to Smiley for coming up with this cool idea :) svn path=/trunk/; revision=56311
[WIN32K] - Fix a possible integer overflow in NtGdiCreateBitmap - Don't cast length of LARGE_STRING (ULONG) to USHORT, instead truncate to MAXUSHORT. This is still hacky, but better than before. - Fix MSVC warnings svn path=/trunk/; revision=55993
[WIN32K] Fix indentation, comments, debug messages. Lioncash (mathew1800\AT/gmail\DOT/com), bug #6762. svn path=/trunk/; revision=54647
[win32k] - Replace long file headers with short headers - Minor cleanup svn path=/trunk/; revision=53778
[win32k] - Clean up win32k headers even more - remove INTERNAL_CALL and use NTAPI instead - remove several unneeded definitions - remove several unneeded header inclusions svn path=/trunk/; revision=53467
[WIN32K] Rewrite of the GDI handle manager - The old handle manager used a completely retarded spinlock in combination with KeDelayExecutionThread() for both exclusive and shared locks. This is probably the most uneffective algorithm possible. It was also duplicating code everywhere and it was a overall mess It is now replaced with a lock-free reference counter for shared locks and a pushlock for exclusive locks. -> Better performance and scalability. - Allocate user mode object attributes from the new gdi pool. This way, we don't need any caching, since the pool serves as a cache. Its also much faster and uses much less memory. - Allow object allocations of different size, instead of fixed size from a table. This way a single allocation can take care of actual needs. - Allow allcoating objects without a handle and insert them into the handle table later - Properly synchronize the process GDIHandleCount. Now gdiview and taskmanager show the correct number of gdi handles. - Implement a new event tracking system, that is capable of tracking all reverences and locks of objects and pool allocations to help track possible leaks - Make sure that all objects of a process are deleted in cleanup - Make sure all usermode memory allocations are freed, when cleaning up the process pool. - Make sure that each object type is using the correct type of lock (either shared or exclusive, not a mixture) - Fix some object / reference leaks - Lots of inferface improvements - Use global variables for certain things instead of members in the mapped gdi handle table - Make IntSysCreateRectpRgn create a region without a handle - Fix detection od source and mask use in GreStretchBltMask - Use GDIOBJ_bLockMultipleObjects in NtGdiCombineRegion to avoid possible deadlocks - Fix NtGdiAbortPath to reset DCPATH_ACTIVE flag in the dc and only bail out on error, instead of always - Replace DC_AllocateDcAttr and DC_AllocDcAttr with DC_bAllocDcAttr using the new user mode pool - Remove DCU_SyncDcAttrtoUser and DCU_SynchDcAttrtoUser. Those functions were unused and didn't do anything useful anyway, - Replace IntGdiSetDCOwnerEx and DC_SetOwnership with GreSetDCOwner, remove unused NoSetBrush parameter - Replace GDIOBJ_bValidateHandle and IsObjectDead with GreIsHandleValid - Chage GDIOBJ_bLockMultipleObjects: pass object type, return a BOOL, whether all objects could be locked, cleanup on failure svn path=/trunk/; revision=51470
property svn:executable removed svn path=/trunk/; revision=51347
[WIN32K] - Raster operations in user mode are on higher bytes, whereas they are on lower bytes for drivers. Try to clarify this situation. - Add sanity check about what was said previously. - Implement masking in EngBitBlt - Rewrite NtGdiMaskBlt accordingly - Realize the palette when selecting it into a device DC. - When applying raster operation, do so only on 24 bits, we don't support alpha channel in win32k This fixes VLC pink icons, Timo's MaskBlt tests and probably a lot of other things. [SHELL32] - Use correct (?) raster operations for drawing sjortcuts. Also note that now NtGdiMaskBlt locks the device contexts : this should avoid some race conditions, such as icons drawn on top of windows and the like. Win32k sucks less. So does reactos. Dedicated to Timo. Sleep well, mate. svn path=/trunk/; revision=50941
[FORMATTING] fix formatting. No code change svn path=/trunk/; revision=50939
crt header compatibility update: - define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files - don't define HAVE_LRINT(F) in libsamplerate - Remove M_PI constants from win32k svn path=/trunk/; revision=50497
[WIN32K] Remove SetLastWin32Error and use EngSetLastError instead svn path=/trunk/; revision=50139
[YAROTOWS] Reintegrate the branch. For a brighter future. Main features: - Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations. - Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices. - Rewrite device locking. The new method was neccessary to allow dynamic mode switching. - Implement support for enumerating display devices and settings. - Implement dynamic mode switching. - Implement a number of Eng mapping functions. - Rewrite Eng level surface handling for cleaner code and better compatability. - Rewrite parts of the DIB handling code. - Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before. - Improve the XLATE and BRUSH code, removing several old hacks. - Improve icon code. Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. svn path=/trunk/; revision=49275
[win32k] -rename w32k.h to win32k.h and win32k.h to win32kp.h svn path=/trunk/; revision=47036
Hopefully create a branch and not destroy the svn repository. svn path=/branches/reactos-yarotows/; revision=45219
- delayimp.h: Use FORCEINLINE instead of static __inline__ - winbase.h: Make winbase.h usable by MSVC - winuser.h: Add missing const specifiers to GetTabbedTextExtentA/W, TabbedTextOutA/W, ToAscii/Ex and ToUnicode/Ex - Make gdi32, user32, beepmidi and csrss drmk build in msvc - Fix most msvc issues in win32k -- a few remain - Make ntoskrnl compile with /W1 again svn path=/trunk/; revision=42314
Make __CRT_INLINE always inline, use ceil instead of ceill. Fixed linking when compiling with -O0, it should now work. svn path=/trunk/; revision=41077
Remove hBitmap from DC.rosdc and use DC.dclevel.pSurface instead. svn path=/trunk/; revision=40509
win32k brush update: - fix EBRUSHOBJ_vSetSolidBrushColor - Initialize text and background brush in DC_AllocDC - Update the DCs EBRUSHOBJs on demand - Use the DCs EBRUSHOBJs for drawing where appropriate This makes things faster and finally adds support for DC_BRUSH and DC_PEN svn path=/trunk/; revision=40306
Rename IntGdiInitBrushInstance to EBRUSHOBJ_vInit and move it to engbrush.c. Add 2 FIXME comments. svn path=/trunk/; revision=40145
Start to cleanup the mess that claims to be our brush implementation: Rename GDIBRUSHOBJ to BRUSH and GDIBRUSHINST to EBRUSHOBJ. Because that's what it is and nothing else. Rename several BRUSHOBJ_xxx functions to BRUSH_xxx, as they deal with a BRUSH, not a BRUSHOBJ. There is a strict difference between a BRUSH and an (E)BRUSHOBJ. Please don't mix this up by giving them all names like BrushObj. Please use (proper!) hungarian notation. Now the willing reader might actually get a clue how this stuff is supposed to work and maybe also realize how broken it is. svn path=/trunk/; revision=40143